一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Python - python利用rsa庫做公鑰解密的方法教程

python利用rsa庫做公鑰解密的方法教程

2020-12-23 00:54窗戶 Python

RSA是一種公鑰密碼算法,RSA的密文是對代碼明文的數字的 E 次方求mod N 的結果。下面這篇文章主要給大家介紹了關于python利用rsa庫做公鑰解密的方法教程,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下。

前言

對于RSA的解密,即密文的數字的 D 次方求mod N 即可,即密文和自己做 D 次乘法,再對結果除以 N 求余數即可得到明文。D 和 N 的組合就是私鑰(private key)。

算法的加密和解密還是很簡單的,可是公鑰和私鑰的生成算法卻不是隨意的。使用RSA公鑰解密,用openssl命令就是openssl rsautl -verify -in cipher_text -inkey public.pem -pubin -out clear_text,但其python網上還真沒有找到有博文去寫,只有hash的rsa解簽名。

這里使用rsa庫,如果沒有可以到官方網址https://pypi.python.org/pypi/rsa/3.1.4下載。

具體的安裝方法大家可以參考這里:http://www.ythuaji.com.cn/article/89308.html

想了想原理,然后到rsa庫的python代碼里找了找,從verify的代碼里提取了出來,又試驗了試驗,一切OK了。

代碼如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#! /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

用shell驗證如下:

?
1
2
3
4
5
6
7
8
9
10
11
$ 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

一切OK,注意,公鑰pem從私鑰里析出必須用-RSAPublicKey_out,這樣pem文件的第一行和最后一行為以下,這樣rsa.PublicKey.load_pkcs1才會認識。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對服務器之家的支持。

原文鏈接:http://www.cnblogs.com/Colin-Cai/p/8013009.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 成人免费视频一区 | 色哟哟国产成人精品 | 国产一区二区视频在线观看 | 日本 视频 在线 | 国产精品思瑞在线观看 | 日韩高清在线免费观看 | 果冻传媒天美传媒乌鸦传媒 | 四虎影院新网址 | 506070老熟肥妇bbwxx视频 500第一精品 | sao虎影院桃红视频在线观看 | 欧美黑人换爱交换乱理伦片 | 91短视频在线播放 | 范冰冰好紧好滑好湿 | 精品免费视在线视频观看 | 免费一级毛片完整版在线看 | 欧美精品一二三区 | 久久青青草原精品国产软件 | 国内久久| 久久嫩草影院网站 | 成人另类视频 | 亚洲成年网 | 天天久久综合网站 | 日韩免费视频一区 | 天天操网 | 亚洲 欧美 国产 在线观看 | 日韩国产成人精品视频 | 小嫩videos | 女人肮脏的交易中文字幕未删减版 | 欧洲久久 | 国产精品国产色综合色 | 国产一区精品视频 | 欧美草逼网 | 女人把扒开给男人爽 | 欧美人成绝费网站色www吃脚 | 色先锋 影音先锋a 资源站 | 久久精品麻豆国产天美传媒果冻 | 偷拍自拍校园春色 | 亚洲国产第一区二区香蕉日日 | 男人的天堂va | 我与旗袍老师疯狂床震 | 男人都懂www深夜免费网站 |