将 SecByteBlock 中的密钥传递给算法?
Passing a key in a SecByteBlock to an algorithm?
我目前正在从事 Cryptopp 加密项目,需要将密钥传递给 Blowfish 加密算法。
如果我理解正确,我需要编辑这两行:
SecByteBlock key(Blowfish::DEFAULT_KEYLENGTH);
prng.GenerateBlock( key, key.size() );
我的想法是将这里的字符串变量(如 ekey)传递给 SecByteBlock,如下所示:
SecByteBlock key(ekey.data(), ekey.size());
但我好像走错了路。
那么,如何将密钥传递给算法?
该区域的各种 Crypto++ 对象(block/stream 密码和模式)不 SecByteBlock
。他们都取 const byte*
和 size_t
。它来自SymmetricCipher
接口。
SecByteBlock key(ekey.data(), ekey.size());
因为你有一个 ekey
和一个 data
和 size
,你应该直接使用它:
CBC_Mode< Blowfish >::Encryption enc;
enc.SetKeyWithIV(ekey.data(), ekey.size(), iv.data(), iv.size());
如果你只有一个SecByteBlock
,那么像:
SecByteBlock key(...);
CBC_Mode< Blowfish >::Encryption enc;
enc.SetKeyWithIV(key.data(), key.size(), iv.data(), iv.size());
在 Crypto++ - Blowfish 上有一个关于 Blowfish 的 wiki 页面。
上例中的CBC模式仅提供机密性。您还应该考虑使用 Authenticated Encryption 模式来提供 机密性 和 真实性 保证。
我目前正在从事 Cryptopp 加密项目,需要将密钥传递给 Blowfish 加密算法。
如果我理解正确,我需要编辑这两行:
SecByteBlock key(Blowfish::DEFAULT_KEYLENGTH);
prng.GenerateBlock( key, key.size() );
我的想法是将这里的字符串变量(如 ekey)传递给 SecByteBlock,如下所示:
SecByteBlock key(ekey.data(), ekey.size());
但我好像走错了路。 那么,如何将密钥传递给算法?
该区域的各种 Crypto++ 对象(block/stream 密码和模式)不 SecByteBlock
。他们都取 const byte*
和 size_t
。它来自SymmetricCipher
接口。
SecByteBlock key(ekey.data(), ekey.size());
因为你有一个 ekey
和一个 data
和 size
,你应该直接使用它:
CBC_Mode< Blowfish >::Encryption enc;
enc.SetKeyWithIV(ekey.data(), ekey.size(), iv.data(), iv.size());
如果你只有一个SecByteBlock
,那么像:
SecByteBlock key(...);
CBC_Mode< Blowfish >::Encryption enc;
enc.SetKeyWithIV(key.data(), key.size(), iv.data(), iv.size());
在 Crypto++ - Blowfish 上有一个关于 Blowfish 的 wiki 页面。
上例中的CBC模式仅提供机密性。您还应该考虑使用 Authenticated Encryption 模式来提供 机密性 和 真实性 保证。