2014-11-13 3 views
0

나는 128-AES 알고리즘을 사용하여 텍스트를 암호화하는 파이썬 스크립트에서 작업하고 있는데 문제가 있습니다.파이썬 AES 텍스트 암호화 스크립트

그림은 내 스크립트 프로세스를 보여줍니다. 이 문제는 키를 출력 할 때 decryption이 ASCII 범위를 벗어나서 출력 할 때 텍스트를 표시 할 수 없기 때문에 암호 해독시 문제가 없습니다.
잘못된 텍스트가 예상됩니다! 코드에 문제가 있거나 그렇게해야합니까? AES (그리고 가장 현대적인 암호 시스템이) 실제 바이트 값이 아닌 ASCII 값을 암호화 처리되어 있기 때문에, 정상

enter image description here

+2

경고의 말씀 : :

는 암호화 뭔가를 찾고있는 경우는 /은 "고전적인"암호의 일부에 보면, ASCII 암호를 해독 자신의 AES 구현을하는 것은 잠재적으로 위험하다 ; AES (및 유사한) 알고리즘이 100 % 개방되어 있더라도 구현시 종종 버그가있어 키가 없어도 암호문을 해독 할 수 있습니다. 이것은 훌륭한 학습 프로젝트이지만 실제로 코드를 사용하여 물건을 암호화하고 싶지는 않을 것입니다. – Carpetsmoker

답변

1

. 올바르지 않은 키를 사용하면 데이터가 올바르게 암호 해독되지 않으므로 범위가 일반 ASCII 값을 벗어납니다. 등 시저 변화, vigenere

+1

언급 된 "고전적"암호의 올바른 용어는 "고전적/polyalphabetic 암호"입니다. – go2

+0

거의 모든 AES 암호화 참조에서 plaintext 예제가 다음과 같았 기 때문에 16 진수 ASCII 값을 사용했습니다 :'5e390f7df7a69296a7553dc10aa31f6b' 그래서 ASCII 값이 될 것이라고 생각했습니다. – HBS

+1

그 이유는 내용에 구속력이 없기 때문에 바이트 (암호화 파일, IO 스트림 등)와 참조 및 좋은 (자습서) 알고리즘 및 저수준 세부 정보를 다루기 때문입니다. Python의'binascii' 라이브러리에서'unhexlify'와'hexlify' 함수를 사용하여 앞뒤로 변환 할 수 있습니다. 'hex_plaintext = binascii.hexlify (message)'https://docs.python.org/3/library/binascii.html –