簡體   English   中英

如何(成功)從命令行openSSL解碼編碼密碼?

[英]How do I (successfully) decode a encoded password from command line openSSL?

使用PyCrypto(雖然我也在ObjC中嘗試過使用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

輸出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 ESzjTnGMRFnfVOJwQfqtyXOI8yzAatioyufiSdE1dx02McNkZ2IvBg== | openssl enc -nopad -a -des-ecb -K 6162636465666768 -iv 0 -p -d

6162636465666768是用十六進制寫的ASCII“abcdefgh”。

但請注意,ECB模式下的DES可能不是編碼密碼的好方法,也不是您可能聽說過在Unix系統上使用的“DES crypt”。 (對於密碼,通常最好使用難以反轉的算法(通過重新生成結果而不是解密存儲的密碼來檢查密碼)。即使您確實需要能夠解密這些加密密碼,單DES和特別是就機密性而言,歐洲央行的選擇很差。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM