2013-02-05 111 views
2

我是python和pycrypto的新手。 我正在嘗試實現AES-CTR。爲了檢查我的程序是否正確加密,我嘗試使用NIST SP 800-38A標準的測試序列(第F.5節)。但是我沒有得到正確的結果。我究竟做錯了什麼?Pycrypto AES-CTR實現

from Crypto.Cipher import AES 
from Crypto.Utils import Counter 

CTRkey="2b7e151628aed2a6abf7158809cf4f3c" 
ctr=Counter.new(128, initial_value=int("f0f1f2f3f4f5f6f7f8f9fafbfcfdfeff",16)) 
cipherCTR=AES.new(CTRkey, AES.MODE_CTR, counter=ctr) 
print(cipherCTR.encrypt("f0f1f2f3f4f5f6f7f8f9fafbfcfdfeff".decode("hex")).encode("hex")) 

結果:

0008007df81ad564b9aadd6b883fef16 

但預期的結果(密文)是:

874d6191b620e3261bef6864990db6ce 
+0

歡迎重新蟒蛇。不要忘記將至少一個[tag:cryptography]和[tag:encryption]標籤添加到您的加密相關問題中,否則它將不會顯示在許多雷達上:) –

回答

3

在NIST SP 800-38A標準(F.5.1節),則輸入到CTR-AES128的加密操作稱爲明文不是輸入塊

如果使用明文6bc1bee22e409f96e93d7e117393172a),你得到正確的結果,密文874d6191b620e3261bef6864990db6ce