在SecByteBlock中传递密钥给算法

Passing a key in a SecByteBlock to an algorithm?

本文关键字:密钥 算法 SecByteBlock      更新时间:2023-10-16

我目前正在进行一个Cryptopp加密项目,需要将密钥传递给Blowfish加密算法。

如果我理解正确的话,我需要编辑这两行:

SecByteBlock key(Blowfish::DEFAULT_KEYLENGTH);
prng.GenerateBlock( key, key.size() );

我的想法是在这里传递一个字符串变量(如ekey)到SecByteBlock,如下所示:

SecByteBlock key(ekey.data(), ekey.size());

但是看起来我走错路了。那么,我如何将密钥传递给算法呢?

该区域的各种Crypto++对象(块/流密码和模式)采用SecByteBlock。它们都取const byte*size_t。来自SymmetricCipher接口


SecByteBlock键(ekey.data (), ekey.size ());

既然你有一个ekey和一个datasize,你可能应该直接使用它:

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());

有一个关于河豚的wiki页面在Crypto++ - Blowfish。

上面示例中的

CBC模式只提供机密性。您还应该考虑使用Authenticated Encryption模式来提供机密性真实性保证。