RSA は公開鍵暗号アルゴリズムです。RSA の暗号文は、コードの平文内の数値の mod N を E 乗した結果です。以下の記事では、Python で公開鍵を復号するための rsa ライブラリの使用方法について詳しく紹介しています。必要な方は参考にしていただければ幸いです。
はじめに
RSA の復号では、暗号文の数値の D 乗は mod N です。つまり、暗号文自体を D 回乗算し、その結果を N で割って次のようになります。残りのプレーンテキストを見つけます。 D と N の組み合わせが秘密鍵です。
アルゴリズムの暗号化と復号化は依然として非常に単純ですが、公開鍵と秘密鍵を生成するアルゴリズムは任意ではありません。 RSA 公開キーを使用して復号化します。 openssl コマンドは openssl rsautl -verify -in cipher_text -inkey public.pem -pubin -out clear_text です。ただし、Python インターネット上ではハッシュ RSA 復号化署名のみが見つかりました。 。
ここでは rsa ライブラリが使用されています。そうでない場合は、公式 Web サイト https://pypi.python.org/pypi/rsa/3.1.4 からダウンロードできます。
具体的なインストール方法はこちらを参照してください: http://www.jb51.net/article/70331.htm
原理を考えて、rsa ライブラリの Python コードから探しました。検証コードを抽出して再度テストしましたが、すべて問題ありません。
コードは次のとおりです:
#! /usr/bin/env python # -*- coding: utf-8 -*- import sys #rsa from rsa import PublicKey, common, transform, core def f(cipher, PUBLIC_KEY): public_key = PublicKey.load_pkcs1(PUBLIC_KEY) encrypted = transform.bytes2int(cipher) decrypted = core.decrypt_int(encrypted, public_key.e, public_key.n) text = transform.int2bytes(decrypted) if len(text) > 0 and text[0] == '\x01': pos = text.find('\x00') if pos > 0: return text[pos+1:] else: return None fn = sys.stdin.readline()[:-1] public_key = sys.stdin.readline()[:-1] x = f(open(fn).read(), open(public_key).read()) print x
次のようにシェルで検証します:
$ openssl genrsa -out pri2048.pem 2048 Generating RSA private key, 2048 bit long modulus ..+++ ..............................................+++ e is 65537 (0x10001) $ openssl rsa -in pri2048.pem -out pub2048.pem -RSAPublicKey_out writing RSA key $ echo -n 'Just a test' >1.txt $ openssl rsautl -sign -in 1.txt -inkey pri2048.pem -out 1.bin $ { echo 1.bin; echo pub2048.pem; } | ./test_rsa.py Just a test
抽出には-RSAPublicKey_outを使用する必要があることに注意してください。公開鍵この pem のように、秘密鍵から pem ファイルの最初と最後の行は次のとおりです。これにより、rsa.PublicKey.load_pkcs1 がそれらを認識します。
関連する推奨事項:
以上がj 公開鍵復号に Python の rsa ライブラリを使用する方法の詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。