4

Python ライブラリを使用して OpenSSL RSA 秘密/公開キーを (パスフレーズを使用して) インポートし、それを使用してメッセージを復号化する最も簡単な方法を知っている人はいますか?

ezPyCrypto を調べましたが、OpenSSL RSA キーを認識できないようです。次のように importKey を使用してキーをインポートしようとしました。

key.importKey(myKey, passphrase='PASSPHRASE')

私の場合の myKey は、文字列として表される OpenSSL RSA 公開/秘密鍵ペアです。

これは次のように言います:

バインドされていないメソッド importKey() は、最初の引数としてキー インスタンスを指定して呼び出す必要があります (代わりに str インスタンスを取得)

APIドキュメントには次のように書かれています:

importKey(self, キーストリング, **kwds)

誰かが ezPyCrypto を使用してキーを読み取る方法を提案できますか? 私も試しました:

key(key, passphrase='PASSPHRASE')

しかし、これは次のように言います:

ezPyCrypto.CryptoKeyError: 無効なキーをインポートしようとしたか、パスフレーズが正しくありません

ドキュメントへのリンクはこちら:

http://www.freenet.org.nz/ezPyCrypto/detail/index.html

編集:これに関する最新情報です。RSA キーを正常にインポートしましたが、eqPyCrypto が AES ブロック暗号をサポートしていないため、復号化に実際に問題がありました。人々が知るように。ncrypt ( http://tachyon.in/ncrypt/ )を使用して、やりたいことがうまくできました。最小要件を超えるバージョンがインストールされていたにもかかわらず、SWIG と OpenSSL のコンパイルの問題により、M2Crypto でいくつかのコンパイルの問題が発生しました。現時点では、Python の暗号化/復号化フレームワークは地雷原のようです。ほむら、助けてくれてありがとう。

4

2 に答える 2

6

最初のエラーは、のインスタンスimportKey呼び出す必要があることを示しています。key

k = key()
k.importKey(myKey, passphrase='PASSPHRASE')

ただし、ドキュメントは、これがあなたが望むことを行うためのより良い方法であることを示唆しているようです:

k = key(keyobj=myKey, passphrase='PASSPHRASE')
于 2009-07-16T19:18:07.063 に答える
5

何を達成しようとしているのかは明確ではありませんが、M2Crypto を試してみてください。私の観点からは、これは Python で利用できる最高の OpenSSL ラッパーです。

サンプルの RSA 暗号化/解読コードを次に示します。

import M2Crypto as m2c
import textwrap
key = m2c.RSA.load_key('key.pem', lambda prompt: 'mypassword')

# encrypt something:
data = 'testing 123'
encrypted = key.public_encrypt(data, m2c.RSA.pkcs1_padding)
print "Encrypted data:"
print "\n".join(textwrap.wrap(' '.join(['%02x' % ord(b) for b in encrypted ])))

# and now decrypt it:
decrypted = key.private_decrypt(encrypted, m2c.RSA.pkcs1_padding)
print "Decrypted data:"
print decrypted
print data == decrypted
于 2009-07-16T19:33:14.100 に答える