2012-04-02 129 views
7

通過使用該命令,我已經能夠創建一個受DES3密碼保護的RSA密鑰(以及... 我認爲,因爲我對這個加密世界非常陌生) :PyCrypto:生成受DES3密碼保護的RSA密鑰

openssl genrsa -out "/tmp/myKey.pem" -passout pass:"f00bar" -des3 2048 

現在,我想在Python腳本中使用PyCrypto來做到這一點,如果可能的話。我看過this message,這似乎不鼓勵使用PyCrypto來做到這一點。它仍然是這樣嗎?

當然我可以隨時撥打os.execute,並執行上面的命令,但我會考慮「作弊」:-)。我非常想學習PyCrypto。

預先感謝您。

回答

6

從PyCrypto 2.5開始,您可以導出一個RSA私鑰,並通過密碼保護它。三重DES密鑰是從密碼內部派生的,用於執行實際加密。 。

例如:

from Crypto import RSA 
from Crypto import Random 

random_generator = Random.new().read 
key = RSA.generate(1024, random_generator) 
exportedKey = key.exportKey('PEM', 'my secret', pkcs=1) 

變量exportedKey包含密鑰的ASCII版本(PEM),根據PKCS#1(加密標準編碼的另一種選擇是pkcs=8的 - 你猜怎麼着 - PKCS# 8)。由於結果是標準的,您可以將其與其他幾個程序一起使用,包括openssl。 當然,您也可以通過PyCrypto將其重新導入python!

exportKey方法記錄在here

+0

工作就像一個魅力!我得到了幾乎與openssl命令相同的輸出:Proc-Type:4,ENCRYPTED DEK-Info:DES-EDE3-CBC,F7149C8E62E0854B 4fUV/FmaMmL7qZH83 + ocigFy [...] – BorrajaX 2012-04-03 15:49:04

+0

爲了讓我明白,那意味着命令exportedKey = key.exportKey('PEM','my secret',pkcs = 1)從密碼'my secret'生成RSA密鑰? 'PEM'和pkcs是否有安全隱患? – 2013-12-08 04:15:06

+0

調用方法'generate'時會創建RSA密鑰。 'export'方法將其採用PEM格式進行編碼。 PEM和PKCS格式對我來說沒有明顯的安全弱點。有趣的是3DES密鑰是如何從密碼派生出來的:它模仿'openssl',它使用了相當過時的算法。 – SquareRootOfTwentyThree 2013-12-08 17:02:22