Python 如何(成功地)从命令行openSSL解码编码密码?

Python 如何(成功地)从命令行openSSL解码编码密码?,python,linux,bash,encryption,openssl,Python,Linux,Bash,Encryption,Openssl,使用PyCrypto(尽管我在ObjC中也尝试过使用OpenSSL绑定): 输出base64编码值: ESzjTnGMRFnfVOJwQfqtyXOI8yzAatioyufiSdE1dx02McNkZ2IvBg== 如果你是翻译,ciph会给你 '\x11,\xe3Nq\x8cDY\xdfT\xe2pA\xfa\xad\xc9s\x88\xf3,\xc0j\xd8\xa8\xca\xe7\xe2I\xd15w\x1d61\xc3dgb/\x06' 很简单。我应该能够通过管道将此输出传输到Op

使用PyCrypto(尽管我在ObjC中也尝试过使用OpenSSL绑定):

输出base64编码值:

ESzjTnGMRFnfVOJwQfqtyXOI8yzAatioyufiSdE1dx02McNkZ2IvBg==
如果你是翻译,ciph会给你

'\x11,\xe3Nq\x8cDY\xdfT\xe2pA\xfa\xad\xc9s\x88\xf3,\xc0j\xd8\xa8\xca\xe7\xe2I\xd15w\x1d61\xc3dgb/\x06'
很简单。我应该能够通过管道将此输出传输到OpenSSL并对其进行解码:

我测试以确保b64解码工作正常-

python enctest.py | openssl enc -base64 -d
+ python enctest.py
+ openssl enc -base64 -d
,?Nq?DY?T?pA???s??,?jب???I?5w61?dgb/
不太好看,但你可以看到它解码得很好,“dgb”和“Nq”仍然存在

但是,请全力以赴:

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?
我做错了什么?我尝试过使用-k abcdefgh-iv 0000000000000000或以交互方式键入密码-同样的问题。


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

6162636465666768是以十六进制写出的ASCII“abcdefgh”

但请注意,ECB模式下的DES可能不是编码密码的好方法,也不是您可能听说过的Unix系统上使用的“DES crypt”。
(对于密码,通常最好使用难以逆转的算法(通过重新生成结果来检查密码,而不是解密存储的密码)。即使您确实需要能够解密这些加密密码,单DES,尤其是ECB,就保密性而言,都是糟糕的选择。)

当然,我将要使用Blowfish CBC,我刚刚抓取了DES代码示例进行快速测试=)谢谢您的帮助!
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?