2

私はプロトタイプに取り組んでいるので、Chrome 拡張機能と Python サーバーの間で RSA を使用する必要があります。

これまでのところ、https://sourceforge.net/projects/pidcrypt/https://www.dlitz.net/を使用する予定でした。ただし、ドキュメントに従って復号化と暗号化を機能させることはできますが、互いのメッセージを復号化することはできません。

相互運用するライブラリを提案するか、このライブラリで何か問題があるかどうかを教えてください。

私が調べたところ、pidder は RSA PKCS#1 暗号化スタイルのパディング (タイプ 2) を使用します。グーグルで調べたところ、PyCrypto が PKCS1_OAEP を呼び出すタイプであることがわかりました。よくわかりませんが、標準と他の2つを試しました。

助けていただければ幸いです。

4

2 に答える 2

3

Javascript ライブラリ (pidCrypt) は、OAEP ではなく、RSA 暗号化に PKCS#1 v1.5 を使用します。

これは PyCrypto でサポートされています (こちらを参照)。これは暗号化の例です:

from Crypto.Cipher import PKCS1_v1_5
from Crypto.PublicKey import RSA
from Crypto.Hash import SHA

message = 'To be encrypted'
h = SHA.new(message)

key = RSA.importKey(open('pubkey.der').read())
cipher = PKCS1_v1_5.new(key)
ciphertext = cipher.encrypt(message+h.digest())

そして復号化:

from Crypto.Hash import SHA
from Crypto import Random

key = RSA.importKey(open('privkey.der').read())

dsize = SHA.digest_size
sentinel = Random.new().read(15+dsize)      # Let's assume that average data length is 15

cipher = PKCS1_v1_5.new(key)
message = cipher.decrypt(ciphertext, sentinel)

digest = SHA.new(message[:-dsize]).digest()
if digest==message[-dsize:]:                # Note how we DO NOT look for the sentinel
     print "Encryption was correct."
else:
     print "Encryption was not correct."

PKCS#1 v1.5 暗号化スキームは、ひどく壊れていることが知られていることに注意してください。

于 2013-05-30T11:48:34.020 に答える
-3

代わりに HTTPS ajax 接続を使用することは可能でしょうか? そうすれば、自分で心配する必要なく、エンド ツー エンドの暗号化を行うことができます。

于 2013-05-29T21:22:55.630 に答える