這裏得到不同的結果是我的代碼:AES使用相同的密鑰和IV加密明文一樣反覆
from Crypto.Cipher import AES
import binascii
def encrypt(secret_key, sign, raw):
key = md5(secret_key).hexdigest()[::-2]
iv = md5(sign).hexdigest()[::-2]
raw += (16 - len(raw) % 16) * '\0'
generator = AES.new(key, AES.MODE_CBC, IV=iv)
#***********************************************
#Problems occur at here !
#If I execute "generator.encrypt(raw)"
#The results are not same every time
print generator.encrypt(raw) # result_1
print generator.encrypt(raw) # result_2
print generator.encrypt(raw) # result_3
#***********************************************
return binascii.b2a_hex(generator.encrypt(raw))
我會得到不同的結果時,我每次執行「generator.encrypt(生) 「 這對我來說非常混亂,因爲我使用了相同的KEY和IV。
我想建立一個API-系統,我需要別人發佈他們的加密數據,不管他們使用哪種語言,只是想在AES中得到相同的結果。
如何在使用AES時獲得穩定的結果?
我的意思是我想在使用相同的KEY和IV來加密相同的明文時得到相同的結果。
某處,您的IV正在重新初始化。我在Golang AES實施中發生了這種情況。您需要閱讀文檔以瞭解每一步的功能。 –
將AES.new(key,AES.MODE_CBC,IV = iv)更改爲generator = AES.new(key,AES.MODE_CBC,iv)並參見 –