gpt4 book ai didi

c++ - 256 位 Rijndael block 大小?

转载 作者:太空狗 更新时间:2023-10-29 21:24:42 26 4
gpt4 key购买 nike

我正在尝试使用 cryptopp 将解密例程从 C# 程序移植到 C++,但我遇到了问题。在C#程序中,key和IV都是256位。所以我试着做这样的事情:

    char *hash1 = "......";
std::string hash2;

CryptoPP::StringSource(hash1, true,new CryptoPP::Base64Decoder(new CryptoPP::StringSink(hash2)));
CryptoPP::Rijndael::Decryption decryptor(key, 32);
CryptoPP::CBC_Mode_ExternalCipher::Decryption cbcDecryption( decryptor, iv);
CryptoPP::StreamTransformationFilter stfDecryptor(cbcDecryption, (new CryptoPP::StringSink( decryptedData ) ));
stfDecryptor.Put( reinterpret_cast<const unsigned char*>( hash2.c_str() ), hash2.size() );
stfDecryptor.MessageEnd();

我得到了

StreamTransformationFilter: ciphertext length is not a multiple of block size.

我试过像这样传递 IV 尺寸:

    CryptoPP::CBC_Mode<CryptoPP::Rijndael >::Decryption decr;
decr.SetKeyWithIV(key, 32, iv, 32);

但后来我得到:

IV length 32 exceeds the maximum of 16.

那么,当数据由长度为 32 的 IV 加密时,我该如何解密数据?

最佳答案

查看实现,当前的 crypto++ 迭代仅支持 block 大小为 16 字节的 Rijndael。由于 IV 必须恰好是 CBC 模式的单个 block ,因此具有 256 位 block 大小的 Rijndael 似乎是不可能的。

关于c++ - 256 位 Rijndael block 大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15449756/

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