AES解密计数器模式

时间:2012-07-28 21:56:32

标签: python aes pycrypto

我有一个64个字符的字符串。前32个字符代表IV,后32个字符是加密消息。每个字符代表4位,因此我必须成对地解释字符串以获得单个字节。

我要做的是复制反模式解密的工作原理。据我了解这个过程,我应该能够将我的密文反对我的IV的加密,这应该产生纯文本。 (请注意,我的密文= 16个字节=一个块,所以我不相信这里不需要填充或递增IV。)

无论我怎么做,我都没有任何清晰的输出。我认为我的问题是我如何加密我的IV,但我不确定。我一直在攻击这个,但我无处可去。谁能看到我做错了什么?这是我写的代码:

def decryptCTR(key, ciphertext):
    IV = ciphertext[:32]
    C0 = ciphertext[32:64]
    #convert into 16 byte strings
    key = array.array('B', key.decode("hex")).tostring()
    IV = array.array('B', IV.decode("hex")).tostring()

    # ENCRYPT iv with the key
    encodeAES = lambda c, s: base64.b64encode(c.encrypt(s))
    cipher = AES.new(key, AES.MODE_CFB)
    encryptedIV = encodeAES(cipher, IV)

    #xor the encrypted iv with the ciphertext block
    print "XOR: " + strXOR(encryptedIV, C0)

    return

1 个答案:

答案 0 :(得分:2)

答案很简单:不加密IV。 IV应该以明文形式发送。