将Rijndael加密从python 2转换为3

2024-10-06 13:00:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图更新一些代码从python2到3,并有一些特定的加密功能的问题。这是python 2代码:

trans_raw = '6c9474469ddf7578f3e5ad8a4c703d99'
raw_prime = '583423bbbf900e9a211664861e28c9f347835017'

transkey = trans_raw.decode('hex')
prime = raw_prime.decode('hex')[:16]

r = rijndael.rijndael(transkey)
result = r.encrypt(prime).encode('hex')

print result

#result = fa016bdda2f884d9126fc746f5a00714

此函数中使用的rijndael来自:https://github.com/sectroyer/SmartCrypto/blob/master/PySmartCrypto/rijndael.py

我试过把它转换成python3,但我不觉得我差一点。 这就是我尝试过的

trans_raw = '6c9474469ddf7578f3e5ad8a4c703d99'
raw_prime = '583423bbbf900e9a211664861e28c9f347835017'

transkey = binascii.unhexlify(trans_raw)
prime = binascii.unhexlify(raw_prime)[:16]

r = AES.new(transkey, AES.MODE_ECB)
ciphertext = r.encrypt(prime)
result = binascii.hexlify(ciphertext).decode('utf-8')
print(result)

#result = ba5a2b6bb7176dd321250e7d672b0a4a

我试过使用https://gist.github.com/jeetsukumaran/1291836#gistcomment-901601 评论中有人说是为python3更新的。我也尝试过使用内置的pythonAES.新(转换键,AES模式)但这两种选择都没有得到我想要的结果。有人知道我错过了什么吗?你知道吗


Tags: 代码httpsgithubtransrawresultprimeencrypt