Question

Utilisation de PyCrypto (même si j'ai déjà essayé ceci dans ObjC avec les liaisons 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

génère une valeur codée en base64 de:

ESzjTnGMRFnfVOJwQfqtyXOI8yzAatioyufiSdE1dx02McNkZ2IvBg==

Si vous étiez dans l'interprète, Ciph vous donnera

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

Assez facile. Je devrais pouvoir diriger cette sortie vers OpenSSL et la décoder:

Je teste pour m'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/

Ce n’est pas beau, mais vous pouvez voir qu’il a été décodé correctement, "dgb". et " Nq " sont toujours là.

Mais allez 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 de saisir le mot de passe de manière interactive - même problème.

Était-ce utile?

La solution

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

6162636465666768 est l'ASCII "abcdefgh" écrit en hexadécimal.

Mais notez que DES en mode ECB n’est probablement pas un bon moyen de coder des mots de passe et qu’il n’est pas non plus le " crypt DES ". vous avez peut-être entendu parler d’être utilisé sur des systèmes Unix. (Pour les mots de passe, il est généralement préférable d’utiliser un algorithme difficile à inverser (vérifier le mot de passe en régénérant le résultat plutôt que de déchiffrer le mot de passe stocké). Même si vous devez pouvoir déchiffrer ces mots de passe chiffrés, single-DES et en particulier la BCE sont de mauvais choix en ce qui concerne la confidentialité.)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top