gpt4 book ai didi

c++ - SecByteBlock 不接受字符串作为自定义键

转载 作者:行者123 更新时间:2023-11-28 02:24:02 24 4
gpt4 key购买 nike

我正在尝试将自定义 key 与 Crypto++ 结合使用。我的程序使用随 secret 钥,但当我尝试向 SecByteBlock 传递 key 时出现智能感知错误。

引用文献here将其定义为 SecBlock (const T *t, size_type len) 但我之前从未遇到过 const T。

void EncryptFile(string cEncryptionKey, string cFilePath, string cTempFilepath)
SecByteBlock key_aes(pEncryptionKey, AES::DEFAULT_KEYLENGTH);//giving error
//SecByteBlock key_aes(ES::DEFAULT_KEYLENGTH); // Generates a random key

最佳答案

A SecByteBlock SecBlock< T, A > 的类型定义与 T = byte .三个构造函数是:

SecBlock (size_type size=0)
SecBlock (const SecBlock< T, A > &t)
SecBlock (const T *t, size_type len)

没有您要使用的构造函数。这不存在:

SecByteBlock (const string& str, size_type size)

所以你只需要:

ASSERT(key.size() == AES::DEFAULT_KEYLENGTH);
SecByteBlock key_aes(reinterpret_cast<const byte*>(key.data()), key.size());

您可能需要执行 static_cast<size_t>(AES::DEFAULT_KEYLENGTH) ,但您通常不必这样做。如果你使用 -Wextra , -Wsign-conversion-Wconversion ,您可能必须这样做。


回到 10,000 英尺,您可能应该避免将 key 放在 string 中开始。

创建一个 SecByteBlock有一个大小(上面的第一个构造函数),并直接读入它。然后,传递 SecByteBlock引用EncryptFile .


相关的,我们即将使用 -Wall 进行干净的编译。 , 所以你应该在你的项目中启用它。要使用更清洁的来源,您需要 checkout from SVNclone from Git .

关于c++ - SecByteBlock 不接受字符串作为自定义键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31348936/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com