2012-05-10 4 views
4

PHP 코드를 해독 :암호화, 파이썬에서

$key = "12345678abcdefgh12345678abcdefgh"; 
$iv = "12345678abcdefgh"; 
$plaindata = "This is a test string."; 

$enc = base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, $plaindata, MCRYPT_MODE_CBC, $iv)); 

echo($enc); 

결과 :이 파이썬에서 암호를 해독 할 수있는 방법

QBN0Yue3D9hBrBuD01n5KWG+lv2doMf97cKm/AeusAI= 

?

+0

이 관련 답변을 참조하십시오 나중에이를 제거해야합니다 http://stackoverflow.com/a/8232171/623518는 그 ans와 – Chris

+0

ECB 모드를 사용하여 암호 해독하고 iv를 사용하지 않습니다. iv를 사용하여 CBC 모드에서 해독하려고합니다. – user812120

답변

5

from Crypto.Cipher import AES 
import base64 

AES.key_size=128 
iv="your iv" 
key="your key" 
crypt_object=AES.new(key=key,mode=AES.MODE_CBC,IV=iv) 

decoded=base64.b64decode(plain) # your ecrypted and encoded text goes here 
decrypted=crypt_object.decrypt(decoded) 

이것은 디코딩 된 텍스트를 가져올 것이다 (내가 PyCrypto가 설치되어 있습니까 altho) 이런 식으로 뭔가를 시도하지만 16

의 크기의 배수 여야하는 것은 바이트 패딩됩니다

당신은 아마 적절한 패딩 방식을 결정하고 그에 따라

+0

고맙습니다. 누군가가 PyCrypto를 설치하는데 어려움이있을 경우, 여기 http://apprenticealf.wordpress.com/2011/01/14/windows-python-ebooks-and-drm/ – user812120

+1

에서 암호화 된 문자열 값을 얻는 방법을 따르십시오. 해독 된? 그것을 시도 할 때 나는 이진 데이터를 얻고있다. 나는 해독하려고 노력 중이 야 = crypt_object.decrypt ('mydata 16 진수')하지만 다시 바이너리를 받고 ... –

-7

the manual을 읽으십시오. 꽤 잘 설명되어 있습니다.

data = base64.b64decode('QBN0Yue3D9hBrBuD01n5KWG+lv2doMf97cKm/AeusAI=') 
+0

mcrypt 부분이 있습니다. – jadkik94

+0

귀하의 질문은 base64 결과를 해독하는 것이 었습니다. 한 가지 방법으로 암호화 한 후 되돌릴 수 없습니다. 그게 전부 야. – TJHeuvel

+0

'base64.decode'는 두 개의 인자를 취하므로 코드는'TypeError'를 발생시킵니다. 나는 당신이'base64.b64decode' 또는'base64.decodestring'을 사용하기로했다. 또한, 세미콜론과 함께 무엇이며, 귀하의 대답은 디코딩 된 문자열을 해독하지 않습니다. – Chris