在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++对象(块/流密码和模式)不采用SecByteBlock
。它们都取const byte*
和size_t
。来自SymmetricCipher
接口
SecByteBlock键(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());
有一个关于河豚的wiki页面在Crypto++ - Blowfish。
上面示例中的CBC模式只提供机密性。您还应该考虑使用Authenticated Encryption模式来提供机密性和真实性保证。
相关文章:
- SSH通过/sbin/SSH无法读取RSA密钥文件(从控制台运行)
- 允许从 std::map 的密钥窃取资源?
- TMap::Emplace() 在应用现有密钥时会覆盖吗?
- 在没有密钥的情况下读取密文的剩余噪声预算
- 如何修复无效的API密钥,IP或操作权限错误?
- 所有可能的链接生成器与64位密钥
- 如何在unordered_map中更改密钥?
- 获取当前密钥状态?
- curl_easy_perform() 失败:SSL 对等证书或 SSH 远程密钥不正常
- 将密钥发送到非前台的游戏窗口
- 有哪些方法可以对基于 256 位密钥的矩阵进行加扰?
- 如何在精灵表上的两个不同部分之间来回切换,同时用户仍使用 SFML 持有密钥
- 如何将CNG密钥转换为OpenSSL EVP_PKEY(反之亦然)?
- 运行密钥密码解密知道密钥?
- std::unordered_map 运算符 [] 是否对非现有密钥进行零初始化?
- 封装 std::map 以允许迭代,但没有直接密钥访问?
- 如果我使用同一个密钥推送用户数据两次,会发生什么
- 如何在C++中创建自己的编译密钥
- 重载std::映射不同的密钥类型
- 在SecByteBlock中传递密钥给算法