私は、公開された公開鍵を使用して暗号化されたメッセージを復号化するように頼んだこの挑戦に直面しました。暗号化されたメッセージ PyCryptoでエクスポートされたRSA公開鍵を使用してメッセージを復号化する方法は?
エクスポート公開鍵は、私は、公開鍵をインポートして解読しようとしたが、私は私だと思い
- 暗号Pythonスクリプト
- :私は3つのファイルで与えられていますメッセージを解読するために秘密鍵を把握しなければならない。
暗号化コードは次のとおりです。256個のキーは非常に小さく、簡単に因数分解することができ、コメントで指摘
import gmpy from Crypto.Util.number import * from Crypto.PublicKey import RSA from Crypto.Cipher import PKCS1_v1_5 message = open('message', 'r').read() * 30 def ext_rsa_encrypt(p, q, e, msg): m = bytes_to_long(msg) while True: n = p * q try: phi = (p - 1)*(q - 1) d = gmpy.invert(e, phi) pubkey = RSA.construct((long(n), long(e))) key = PKCS1_v1_5.new(pubkey) enc = key.encrypt(msg).encode('base64') return enc except: p = gmpy.next_prime(p**2 + q**2) q = gmpy.next_prime(2*p*q) e = gmpy.next_prime(e**2) p = getPrime(128) q = getPrime(128) n = p*q e = getPrime(64) pubkey = RSA.construct((long(n), long(e))) f = open('pubkey.pem', 'w') f.write(pubkey.exportKey()) g = open('msg.enc', 'w') g.write(ext_rsa_encrypt(p, q, e, message))
256ビットキー(sic!)は非常に小さいです。モジュラスを(一般的な)数値フィールドシーブの実装で因数分解することができます。 @ArtjomB。 –
ありがとう、私は秘密鍵を作成しましたが、 "key = PKCS1_v1_5.new(privatekey); key.decrypt(encmsg.decode( 'base64'))"を使用してメッセージをどのように復号化できますか? PKCS1_v1_5にはセンチネルが必要です。どのように私は暗号を解読するために警備員を知ることができますか? – RAHAB2
センチネルは、復号化エラーがあった場合に返すオブジェクトです。あなたは、センチネルが何であるかを決める。 '-1'はセンチネルになる可能性があります。 ''鶏肉 ''はセンチネルである可能性があります。あなたはその考えを得る。 –