En utilisant PyCrypto (bien que je l'ai essayé cela en ObjC avec les fixations OpenSSL ainsi):Comment puis-je décoder (avec succès) un mot de passe codé à partir de la ligne de commande 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
émet une valeur codée base64 de:
ESzjTnGMRFnfVOJwQfqtyXOI8yzAatioyufiSdE1dx02McNkZ2IvBg==
Si vous étiez l'interprète, ICPC vous donner
'\x11,\xe3Nq\x8cDY\xdfT\xe2pA\xfa\xad\xc9s\x88\xf3,\xc0j\xd8\xa8\xca\xe7\xe2I\xd15w\x1d61\xc3dgb/\x06'
assez facile. Je devrais être en mesure de tuyau cette sortie à OpenSSL et le décoder:
je test pour vous assurer que le décodage B64 fonctionne -
python enctest.py | openssl enc -base64 -d
+ python enctest.py
+ openssl enc -base64 -d
,?Nq?DY?T?pA???s??,?jب???I?5w61?dgb/
Pas assez, mais vous pouvez voir qu'il a obtenu décodé bien " dgb "et" Nq "sont toujours là.
Mais aller pour la chose complète:
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?
Qu'est-ce que je fais mal? J'ai essayé d'utiliser -k abcdefgh -iv 0000000000000000 ou en tapant le mot de passe de manière interactive - même problème.
Bien sûr, j'allais utiliser Blowfish CBC, j'ai juste saisi l'exemple de code DES pour un test rapide =) Merci pour l'aide! –