【问题标题】:Cryptopp: Get the padded string of input to the cipherCryptopp:获取密码输入的填充字符串
【发布时间】:2020-05-25 00:36:14
【问题描述】:

我目前正在为 c++ 的 crypto++ 库苦苦挣扎。我想要的只是获取密码的填充输入。我有以下 sn-p 来加密字符串“plain”:

CryptoPP::StringSource(plain, true, new CryptoPP::StreamTransformationFilter(e, new CryptoPP::StringSink(cipher), CryptoPP::BlockPaddingSchemeDef::DEFAULT_PADDING));

其中 e 是一个密码:

CryptoPP::CBC_Mode<CryptoPP::SPECK128 >::Encryption e;

我可以用下面的sn-p输出密文:

CryptoPP::StringSource(cipher, true, new CryptoPP::HexEncoder(new CryptoPP::FileSink(std::cout)));

我需要的是获得字符串“plain”的填充版本。有没有人可以提示我使用 StreamTransformationFilter 来获取填充输入字符串的输出?

【问题讨论】:

    标签: c++ encryption cryptography crypto++


    【解决方案1】:

    只需使用CryptoPP::BlockPaddingSchemeDef::NO_PADDING,而不是在解密过程中完全删除BlockPaddingSchemeDef。然后它将不期望填充并将填充解释为纯文本。

    填充始终在最后 16 个字节内(假设块大小为 128 位),从右侧开始。请注意,返回的字节通常不是字符,因为它们低于 0x20,这意味着它们通常被解释为控制字符。

    【讨论】:

    • 我对我的输入的填充版本感兴趣,所以我想要加密的填充版本。
    • 添加了“解密期间”。
    猜你喜欢
    • 2022-01-12
    • 2016-07-20
    • 2012-06-11
    • 1970-01-01
    • 2015-05-22
    • 1970-01-01
    • 1970-01-01
    • 2018-11-21
    • 2014-12-11
    相关资源
    最近更新 更多