ホームページ  >  記事  >  バックエンド開発  >  j 公開鍵復号に Python の rsa ライブラリを使用する方法の詳細な説明

j 公開鍵復号に Python の rsa ライブラリを使用する方法の詳細な説明

小云云
小云云オリジナル
2017-12-12 09:16:063425ブラウズ

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 がそれ​​らを認識します。

関連する推奨事項:

Python での順列および組み合わせ計算演算の実装例

Python での二分探索とクイックソートの例の詳細な説明

正規表現コネクタを使用した Python のサンプルコード

以上がj 公開鍵復号に Python の rsa ライブラリを使用する方法の詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。