将SecByteBlock中的密钥传递给算法?

时间:2015-05-26 17:18:11

标签: c++ blowfish crypto++

我目前正在开发Cryptopp加密项目,需要将密钥传递给Blowfish加密算法。

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

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

我的想法是将字符串变量(如ekey)传递给SecByteBlock,如下所示:

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

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

1 个答案:

答案 0 :(得分:0)

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

  

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

由于ekeydatasize,您应该直接使用它:

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的维基页面。

上述示例中的CBC模式仅提供机密性。您还应该考虑使用Authenticated Encryption模式来提供机密性真实性保证。