PyCrypto 모듈을 사용하여 카운터 모드 암호화를 수행하기 위해 Python 함수를 생성합니다. 나는 내장 함수를 알고 있지만 직접 구현하려고합니다.PyCrypto AES 암호화가 예상대로 작동하지 않습니다.
나는 Test Vector #1 from RFC 3686을 시도하고 올바른 카운터 블록과 올바른 ASCII 형식의 키가 있습니다. 그러나 키를 사용하여 카운터 블록을 암호화 할 때 예상되는 키 스트림을 얻지 못합니다. 내 코드의
관련 부분 : 필요한 경우
cipher = AES.new(key)
ctr_block = iv + nonce + ctr
key_stream = base64.b64decode(cipher.encrypt(ctr_block))
내가 더 많은 코드를 제공 할 수 있습니다,하지만 난 잘 모르겠어요 어떻게 그들을 인쇄 할 때 ctr_block
및 key
많은 물음표 문자가 있기 때문이다.
예상되는 답변을 얻지 못하는 이유는 무엇입니까? 모든 것이 제대로되어야하는 것처럼 보입니다. 아마도 문자열의 인코딩에 실수를했을 수도 있습니다.
편집
자가 포함 된 코드 :
from Crypto.Cipher import AES
import base64
def hex_to_str(hex_str):
return str(bytearray([int(n, 16) for n in hex_str.split()]))
key = hex_to_str("AE 68 52 F8 12 10 67 CC 4B F7 A5 76 55 77 F3 9E")
iv = hex_to_str("00 00 00 00 00 00 00 00")
nonce = hex_to_str("00 00 00 30")
ctr = hex_to_str("00 00 00 01")
cipher = AES.new(key)
ctr_block = iv + nonce + ctr
key_stream = base64.b64decode(cipher.encrypt(ctr_block))
print "".join([hex(ord(char)) for char in key_stream])
# 0xd90xda0x72
테스트 할 수있는 예제를 제공하려면 적어도 "key", "iv", "nonce"및 "ctr"을 어떻게 작성했는지 표시해야합니다. – wRAR
예제는 [Roland Smith 's code] (http://stackoverflow.com/a/15736125/805556)입니다. – LonelyWebCrawler
아니요, 짧고 자체 포함 된 올바른 예가 아닙니다. – wRAR