2013-10-19 5 views
0

저는 PyCrypto의 AES 및 DES 구현을 중심으로 놀고있었습니다. 매번 일반 텍스트에서 암호화 한 암호문을 해독하고 임의의 문자열을 제공합니다.PyCrypto 암호 해독 텍스트는 평문을 산출하지 않습니다

나는 다음과 같은 시도 :

from Crypto.Cipher import AES,DES 
from Crypto import Random 

iv_AES = Random.new().read(AES.block_size) 
iv_DES = Random.get_random_bytes(8) 

key_AES = 'abcdefghijklmnop' 
key_DES = 'abcdefgh' 

aes = AES.new(key_AES,AES.MODE_CFB,iv_AES) 
aes1 = AES.new(key_AES,AES.MODE_CFB,iv_AES) 
des = DES.new(key_DES,DES.MODE_CFB,iv_DES) 
des1 = DES.new(key_DES,DES.MODE_CFB,iv_DES) 

plaintext = 'Hello! World' 

print plaintext == aes.decrypt(aes.encrypt(plaintext)) 
print plaintext == des.decrypt(des.encrypt(plaintext)) 
print plaintext == aes1.decrypt(aes.encrypt(plaintext)) 
print plaintext == des1.decrypt(des.encrypt(plaintext)) 

결과 : 이런 일이 왜 이해가 안

False 
False 
True 
True 

.

여기서 실제로 일어나고있는 것이 무엇인지 설명해주세요. 왜 그렇습니까? PyCrypto documentation에서

답변

1

: 또한 암호화 또는 동일한 키를 사용하여 다른 데이터를 해독 개체를 재사용 할 수 있다는 것을 의미한다

.

암호화 및 암호 해독을 위해 별도의 개체 인스턴스를 구성하려면 암호를 다시 초기화해야합니다.

from Crypto.Cipher import AES,DES 
from Crypto import Random 

iv_AES = Random.new().read(AES.block_size) 
iv_DES = Random.get_random_bytes(8) 

key_AES = 'abcdefghijklmnop' 
key_DES = 'abcdefgh' 

aese = AES.new(key_AES,AES.MODE_CFB,iv_AES) 
aesd = AES.new(key_AES,AES.MODE_CFB,iv_AES) 
dese = DES.new(key_DES,DES.MODE_CFB,iv_DES) 
desd = DES.new(key_DES,DES.MODE_CFB,iv_DES) 

plaintext = 'Hello! World' 

print plaintext == aesd.decrypt(aese.encrypt(plaintext)) 
print plaintext == desd.decrypt(dese.encrypt(plaintext)) 
+0

정확한 페이지를 제공 할 수 있습니다.이 페이지는 PyCrypto 설명서에 언급되어 있습니다. – tMJ

+0

위의 링크를 제공했습니다 ... 아, 잠깐만, 그 사이트는 예전 스타일의 프레임을 사용합니다 ... 링크를 수정합니다 ... 고정됨 –