Domanda

Uso di PyCrypto (anche se l'ho provato in ObjC anche con i collegamenti OpenSSL):

from Crypto.Cipher import DES
import base64
obj=DES.new('abcdefgh', DES.MODE_ECB)
plain="Guido van Rossum is a space alien.XXXXXX"
ciph=obj.encrypt(plain)
enc=base64.b64encode(ciph)
#print ciph
print enc

genera un valore codificato in base64 di:

ESzjTnGMRFnfVOJwQfqtyXOI8yzAatioyufiSdE1dx02McNkZ2IvBg==

Se fossi nell'interprete, ciph ti darà

'\x11,\xe3Nq\x8cDY\xdfT\xe2pA\xfa\xad\xc9s\x88\xf3,\xc0j\xd8\xa8\xca\xe7\xe2I\xd15w\x1d61\xc3dgb/\x06'

Abbastanza facile. Dovrei essere in grado di reindirizzare questo output su OpenSSL e decodificarlo:

Ho testato per assicurarmi che la decodifica b64 funzioni -

python enctest.py | openssl enc -base64 -d
+ python enctest.py
+ openssl enc -base64 -d
,?Nq?DY?T?pA???s??,?jب???I?5w61?dgb/

Non carino, ma puoi vedere che è stato decodificato bene, " dgb " e "Nq" sono ancora lì.

Ma scegli la cosa completa:

python enctest.py | openssl enc -base64 -d | openssl enc -nosalt -des-ecb -d -pass pass:abcdefgh
+ python enctest.py
+ openssl enc -nosalt -des-ecb -d -pass pass:abcdefgh
+ openssl enc -base64 -d
bad decrypt
15621:error:06065064:digital envelope routines:EVP_DecryptFinal_ex:bad decrypt:evp_enc.c:461:
j?7????vc]???LE?m³??q?

Cosa sto facendo di sbagliato? Ho provato a usare -k abcdefgh -iv 0000000000000000 o digitando la password in modo interattivo - stesso problema.

È stato utile?

Soluzione

echo ESzjTnGMRFnfVOJwQfqtyXOI8yzAatioyufiSdE1dx02McNkZ2IvBg == | openssl enc -nopad -a -des-ecb -K 6162636465666768 -iv 0 -p -d

6162636465666768 è l'ASCII "abcdefgh" scritto in esadecimale.

Ma nota che DES in modalità ECB non è probabilmente un buon modo per codificare le password e non è nemmeno la "cripta DES" " potresti aver sentito di essere usato su sistemi Unix. (Per le password, di solito è meglio utilizzare un algoritmo difficile da invertire (controllare la password rigenerando il risultato invece di decrittografare la password memorizzata). Anche se è necessario essere in grado di decrittografare queste password crittografate, Single-DES e soprattutto la BCE è una scelta sbagliata per quanto riguarda la riservatezza.)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top