同じ平文を暗号化するために同じキーおよびIVを使用して、異なる結果を得る私のコードです:AESは、ここでは繰り返し
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(生)を実行するとき、私は異なる結果が得られます" 私は同じキーとIVを使用しているので、私は非常に混乱しています。
API-SYSTEMを確立したいのですが、使用している言語にかかわらず、暗号化データを投稿する必要があります.AESで同じ結果を得たいだけです。
AESで安定した結果を得るにはどうすればよいですか?
同じKEYとIVを使用して同じ平文を暗号化すると、同じ結果が得られます。
どこかでIVが再初期化されています。これはゴランAESの実装で私と一緒に起こった。各ステップの内容を確認するには、ドキュメントを調べる必要があります。 –
AES.new(キー、AES.MODE_CBC、IV = iv)をジェネレータ= AES.new(キー、AES.MODE_CBC、iv)に変更し、 –