簡體   English   中英

如何在 pyOpenSSL 中設置密碼模式?

[英]How to set cipher mode in pyOpenSSL?

我正在嘗試將此 cli 命令轉換為 python: openssl genpkey -aes-256-cbc -algorithm RSA -pkeyopt rsa_keygen_bits:2048 -out my-private-key.pem

到目前為止,我發現的最佳選擇是 pyOpenSSL,但是,我似乎無法設置 cbc 密碼模式。 目前這是我的代碼的樣子:

gen_key = OpenSSL.crypto.PKey()

gen_key.generate_key(OpenSSL.crypto.TYPE_RSA, 2048)

OpenSSL.crypto.dump_privatekey(OpenSSL.crypto.FILETYPE_PEM, gen_key, cipher='aes256', passphrase=b"some_passphrase")

然而,這僅指定密碼,而不是其模式。 當我嘗試使用cipher='aes256-cbc'cipher='aescbc256'指定密碼時,我收到一個無效的密碼名稱錯誤。 如果有人能幫我將 aes256 密碼設置為 cbc 模式,我將不勝感激。

對於ciphername參數,您可以使用命令openssl list -cipher-commands打印出的算法名稱。 在那里您會看到提到aes-256-cbc ,這是您要查找的名稱。

您可以以不區分大小寫的方式使用這些密碼,並且列出的大多數密碼都有您也可以使用的別名。 例如,如果您使用openssl -list -cipher-algorithms ,您會注意到

aes256 => AES-256-CBC

所以事實證明你已經在使用 CBC 模式了。

您也可以通過將生成的 PEM 輸入openssl asn1parse命令來驗證這一點,該命令的開頭如下(我在代碼中添加了一條打印語句來打印 PEM):

$ python dumpkey.py | openssl asn1parse
    0:d=0  hl=4 l=1325 cons: SEQUENCE          
    4:d=1  hl=2 l=  87 cons: SEQUENCE          
    6:d=2  hl=2 l=   9 prim: OBJECT            :PBES2
   17:d=2  hl=2 l=  74 cons: SEQUENCE          
   19:d=3  hl=2 l=  41 cons: SEQUENCE          
   21:d=4  hl=2 l=   9 prim: OBJECT            :PBKDF2
   32:d=4  hl=2 l=  28 cons: SEQUENCE          
   34:d=5  hl=2 l=   8 prim: OCTET STRING      [HEX DUMP]:DAA5C15B1DB3C8CF
   44:d=5  hl=2 l=   2 prim: INTEGER           :0800
   48:d=5  hl=2 l=  12 cons: SEQUENCE          
   50:d=6  hl=2 l=   8 prim: OBJECT            :hmacWithSHA256
   60:d=6  hl=2 l=   0 prim: NULL              
   62:d=3  hl=2 l=  29 cons: SEQUENCE          
   64:d=4  hl=2 l=   9 prim: OBJECT            :aes-256-cbc

我不確定list -cipher-commands中提到的所有名稱是否與dump_privatekey()兼容,也不知道該列表是否詳盡(除了別名)。

暫無
暫無

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

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