首页 > 解决方案 > 如何将 std::string 键值分配给 SecByteBlock

问题描述

我正在使用 crypto++ AES 进行加密和解密。

出于某种原因,我将密钥作为字符串类型存储在数据库中。

如何将此密钥分配给 AES SecByteBlock 密钥或使用此值而不是一些随机生成的块来初始化 AES 密钥。

std::string key_fromDB = "12dfre314?//1afsfa";
AutoSeededRandomPool prng;
byte iv[ AES::BLOCKSIZE ];
prng.GenerateBlock( iv, sizeof(iv) );
SecByteBlock temp_key(AES::DEFAULT_KEYLENGTH);
prng.GenerateBlock( temp_key, temp_key.size() );

try 
{
    CBC_Mode< AES >::Decryption d;
    d.SetKeyWithIV(temp_key , temp_key.size(), iv );

    // The StreamTransformationFilter removes
    //  padding as required.
    StringSource ss( cipher, true,
        new StreamTransformationFilter( d,
            new StringSink( recovered )
        ) // StreamTransformationFilter
    ); // StringSource

    std::cout << "recovered text: " << recovered << std::endl;
}
catch ( const CryptoPP::Exception& e)
{
    std::cerr << e.what() << std::endl;
}

标签: c++crypto++

解决方案


推荐阅读