我正在使用Crypto ++库
我制作了IV和键并将它们传递给了函数
CTR_Mode< AES >::Encryption e;
e.SetKeyWithIV(key, 16, iv);
然后当我加密时,我在字符串本身上使用转换过滤器来获取加密字符串。
我想获得与字符串进行异或的最终密码密钥加密吗? 有没有办法从加密对象中获取它?
答案 0 :(得分:0)
如果您只需要与明文的前16个字节进行异或的密钥流(如图所示),那么您需要使用相同的AES CTR模式加密设置为00
的16个字节的块。密钥流的块,当与所有零进行异或时,只返回相同的流。因此,您可以为所需的许多明文块执行此操作。正如您已经猜到的那样,您需要使用相同的密钥和IV。
如果您只想在流中进一步解密某些内容,那么您需要计算一个新的16字节IV。你可以这样做,因为IV直接用作初始计数器(可能用零填充右边)。因此,您只需计算预处理的块数,然后将此值(作为大端值)添加到IV。这当然只适用于块边界,如果要跳转到非常特定的偏移量,可能需要从密钥流中丢弃一些字节。