为什么使用Python,Crypto和M2Crypto之间的AES结果有所不同?

时间:2015-06-09 03:53:19

标签: python encryption

我在python中有两个脚本,一个是使用Crypto加密数据

from Crypto.Cipher import AES
from Crypto import Random


IV = 'c782dc4c098c66cb'
secrect_key = 'c286696d887c9aa0'
cipher = AES.new(secrect_key, AES.MODE_CFB, IV)
data = 'This is a 48-byte message (exactly 3 AES blocks)'
print repr(cipher.encrypt(data))

和另一个使用M2Crypto

import M2Crypto.EVP as EVP
import cStringIO

ENCRYPT_OP = 1
DECRYPT_OP = 0

def aes_encrypt(iv, secret_key, plain_text):
    cipher = EVP.Cipher(alg='aes_128_cfb', 
                        key=secret_key, 
                        iv=iv,
                        op=ENCRYPT_OP)

    input_buffer  = cStringIO.StringIO(plain_text)        
    cipher_data1 = cipher.update(input_buffer.read())
    cipher_data2 = cipher.final()
    input_buffer.close()

    output_buffer = cStringIO.StringIO()
    output_buffer.write(cipher_data1)
    output_buffer.write(cipher_data2)
    cipher_text = output_buffer.getvalue()    
    output_buffer.close()

    return cipher_text

IV = 'c782dc4c098c66cb' # 16 bytes
secrect_key = 'c286696d887c9aa0' # 16 bytes

data = 'This is a 48-byte message (exactly 3 AES blocks)'

cipher_text = aes_encrypt(IV, secrect_key, data)

print(repr(cipher_text))

我已将相同的论点传递给模块,但我无法得到相同的结果,我不知道为什么。

并且,结果是漏洞之一?

0 个答案:

没有答案