欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時間:2017年12月10日 09:45:17   作者:窗戶  
RSA是一種公鑰密碼算法,RSA的密文是對代碼明文的數(shù)字的 E 次方求mod N 的結(jié)果。下面這篇文章主要給大家介紹了關(guān)于python利用rsa庫做公鑰解密的方法教程,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下。

前言

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

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

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

具體的安裝方法大家可以參考這里:http://www.dbjr.com.cn/article/70331.htm

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

代碼如下:

#! /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驗(yàn)證如下:

$ 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才會認(rèn)識。

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

相關(guān)文章

  • Python實(shí)現(xiàn)文本相似度分析

    Python實(shí)現(xiàn)文本相似度分析

    這篇文章主要旨在通過設(shè)計(jì)和實(shí)現(xiàn)有關(guān)文本相似度比較的類Vector和Sketch,幫助大家進(jìn)一步掌握設(shè)計(jì)Python類來解決實(shí)際問題的能力,有需要的小伙伴可以學(xué)習(xí)一下
    2023-07-07
  • 用Python編寫生成樹狀結(jié)構(gòu)的文件目錄的腳本的教程

    用Python編寫生成樹狀結(jié)構(gòu)的文件目錄的腳本的教程

    這篇文章主要介紹了用Python編寫生成樹狀結(jié)構(gòu)的文件目錄的腳本的教程,是一個利用os模塊下各函數(shù)的簡單實(shí)現(xiàn),需要的朋友可以參考下
    2015-05-05
  • python協(xié)程之動態(tài)添加任務(wù)的方法

    python協(xié)程之動態(tài)添加任務(wù)的方法

    今天小編就為大家分享一篇python協(xié)程之動態(tài)添加任務(wù)的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-02-02
  • python定時任務(wù)sched庫用法簡單實(shí)例

    python定時任務(wù)sched庫用法簡單實(shí)例

    sched可用于定時任務(wù),唯一需要注意的就是,這些任務(wù)在一個線程中運(yùn)行,如果前面的任務(wù)耗時過長,則后面的任務(wù)將順延執(zhí)行,下面這篇文章主要給大家介紹了關(guān)于python定時任務(wù)sched庫用法的相關(guān)資料,需要的朋友可以參考下
    2023-01-01
  • 用python實(shí)現(xiàn)爬取奧特曼圖片實(shí)例

    用python實(shí)現(xiàn)爬取奧特曼圖片實(shí)例

    大家好,本篇文章主要講的是用python實(shí)現(xiàn)爬取奧特曼圖片實(shí)例,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下
    2022-02-02
  • PyQt5 QLineEdit輸入的子網(wǎng)字符串校驗(yàn)QRegExp實(shí)現(xiàn)

    PyQt5 QLineEdit輸入的子網(wǎng)字符串校驗(yàn)QRegExp實(shí)現(xiàn)

    這篇文章主要介紹了PyQt5 QLineEdit輸入的子網(wǎng)字符串校驗(yàn)QRegExp實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • 520使用Python實(shí)現(xiàn)“我愛你”表白

    520使用Python實(shí)現(xiàn)“我愛你”表白

    這篇文章主要介紹了520使用Python實(shí)現(xiàn)“我愛你”表白,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-05-05
  • Pycharm中如何關(guān)掉python console

    Pycharm中如何關(guān)掉python console

    這篇文章主要介紹了Pycharm中如何關(guān)掉python console,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-10-10
  • pypy提升python項(xiàng)目性能使用詳解

    pypy提升python項(xiàng)目性能使用詳解

    這篇文章主要為大家介紹了pypy提升python項(xiàng)目性能使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-12-12
  • python tkinter圖形界面代碼統(tǒng)計(jì)工具(更新)

    python tkinter圖形界面代碼統(tǒng)計(jì)工具(更新)

    這篇文章主要為大家詳細(xì)介紹了python tkinter圖形界面代碼統(tǒng)計(jì)工具,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-09-09

最新評論