Python的RSA操作(私钥与公钥)
off999 2025-05-23 19:16 36 浏览 0 评论
RSA是1977年由罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)一起提出的。当时他们三人都在麻省理工学院工作。RSA就是他们三人姓氏开头字母拼在一起组成的。
RSA公开密钥密码体制的原理是:
根据数论,寻求两个大素数比较简单,而将它们的乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥 。
关于RSA的通俗的解释:
使用规定的方法生成一对密钥,一个作为私钥,一个作为公钥;
一段数据通过私钥加密,必须通过公钥解密;反之亦然。
私钥自己保管,公钥对外公开。
比如:理思录的私钥A(理思录),公钥B(理思录)
九赢百信的私钥C(九赢百信),公钥D(九赢百信)
比如:九赢百信希望发送一条信息M给理思录,不希望他人知晓传输的内容,即便获取了数据,也不能解析其中的内容。那么这个人就用公钥B(理思录)去加密这个信息M,变成了X。
当理思录收到了X,就用自己的私钥A(理思录)去解密,解密后才能看到真正的信息M。
这样,理思录可以收到信息M,可是并不知道信息是谁发出的。
为此,信息M在九赢百信发送信息之前,使用自己的私钥C(九赢百信)将信息M加密为N,可以附加自己的公钥信息,然后再通过公钥B(理思录)进行另外一次加密,成为P。
这样,当理思录收到P,之后,先用自己的私钥A(理思录)解密,然后使用公钥D(九赢百信)进行解密。
公钥的公布需要一些类的规定和程序,保证他是可信性。
双钥技术的加密和解密耗费的时间比较大,通常使用这种技术来传输密码,通过密码来解密要传输的数据。
现在用python调用库实现RSA密钥的生成。
安装:pip install rsa
#pip install rsa
import rsa
(pubkey,privkey)=rsa.newkeys(1024)
print(pubkey)
print(privkey)
pub=pubkey.save_pkcs1()
pubfile=open('public.pem','wb')
pubfile.write(pub)
pubfile.close()
pri=privkey.save_pkcs1()
privkey=open('private.pem','wb')
privkey.write(pri)
privkey.close()
生成的文件如下图:
import rsa
# rsa加密
def rsaEncrypt(str):
# 生成公钥、私钥
(pubkey, privkey) = rsa.newkeys(512)
print("公钥:\n%s\n私钥:\n:%s" % (pubkey, privkey))
# 明文编码格式
content = str.encode("utf-8")
# 公钥加密
crypto = rsa.encrypt(content, pubkey)
return (crypto, privkey)
# rsa解密
def rsaDecrypt(str, pk):
# 私钥解密
content = rsa.decrypt(str, pk)
con = content.decode("utf-8")
return con
if __name__ == "__main__":
str, pk = rsaEncrypt("hello")
print("加密后密文:\n%s" % str)
content = rsaDecrypt(str, pk)
print("解密后明文:\n%s" % content)
===================== RESTART: E:/python code/其他/RSA_T01.py ====================
公钥:
PublicKey(9111873236249849209686819369076356655660892337807985520901675955833176249049269417595657300043866173262409777435981355116449943828841734063225123542228361, 65537)
私钥:
:PrivateKey(9111873236249849209686819369076356655660892337807985520901675955833176249049269417595657300043866173262409777435981355116449943828841734063225123542228361, 65537, 2265976623958985648099177290342958340692451948084205075295718673850940787996298407753473721435820250048228469715958524626179351450461377903271599676389673, 5159625978049603036154695303556767905690916535211950049558224975601481091096127691, 1765994914168999577067848938883684661085876986183189630983114088404405371)
加密后密文:
b'f\xbe\xb8\xfd\xa9#\n\x98\xc3\xc0{\xd0n\x17\x10\xfb^\xfd\xdf(\xb41\x1e\x06Ij\xd8\x9a\xd2P\xc2]H\xa4\xeb$\xbd+}b\xd4\x1a \xfb\xee:E\xd0r\x0e\xdcH\xb0v\xd8\xc4\xb1\x94Q\xda,\xc2\xbd\xdd'
解密后明文:
hello
相关推荐
- pip的使用及配置_pip怎么配置
-
要使用python必须要学会使用pip,pip的全称:packageinstallerforpython,也就是Python包管理工具,主要是对python的第三方库进行安装、更新、卸载等操作,...
- Anaconda下安装pytorch_anaconda下安装tensorflow
-
之前的文章介绍了tensorflow-gpu的安装方法,也介绍了许多基本的工具与使用方法,具体可以看Ubuntu快速安装tensorflow2.4的gpu版本。pytorch也是一个十分流行的机器学...
- Centos 7 64位安装 python3的教程
-
wgethttps://www.python.org/ftp/python/3.10.13/Python-3.10.13.tgz#下载指定版本软件安装包tar-xzfPython-3.10.1...
- 如何安装 pip 管理工具_pip安装详细步骤
-
如何安装pip管理工具方法一:yum方式安装Centos安装python3和python3-devel开发包>#yuminstallgcclibffi-develpy...
- Python入门——从开发环境搭建到hello world
-
一、Python解释器安装1、在windows下步骤1、下载安装包https://www.python.org/downloads/打开后选择【Downloads】->【Windows】小编是一...
- 生产环境中使用的十大 Python 设计模式
-
在软件开发的浩瀚世界中,设计模式如同指引方向的灯塔,为我们构建稳定、高效且易于维护的系统提供了经过验证的解决方案。对于Python开发者而言,理解和掌握这些模式,更是提升代码质量、加速开发进程的关...
- 如何创建和管理Python虚拟环境_python怎么创建虚拟环境
-
在Python开发中,虚拟环境是隔离项目依赖的关键工具。下面介绍创建和管理Python虚拟环境的主流方法。一、内置工具:venv(Python3.3+推荐)venv是Python标准...
- 初学者入门Python的第一步——环境搭建
-
Python如今成为零基础编程爱好者的首选学习语言,这和Python语言自身的强大功能和简单易学是分不开的。今天千锋武汉Python培训小编将带领Python零基础的初学者完成入门的第一步——环境搭建...
- 全网最简我的世界Minecraft搭建Python编程环境
-
这篇文章将给大家介绍一种在我的世界minecraft里搭建Python编程开发环境的操作方法。目前看起来应该是全网最简单的方法。搭建完成后,马上就可以利用python代码在我的世界自动创建很多有意思的...
- Python开发中的虚拟环境管理_python3虚拟环境
-
Python开发中,虚拟环境管理帮助隔离项目依赖,避免不同项目之间的依赖冲突。虚拟环境的作用隔离依赖:不同项目可能需要不同版本的库,虚拟环境可以为每个项目创建独立的环境。避免全局污染:全局安装的库可...
- Python内置zipfile模块:操作 ZIP 归档文件详解
-
一、知识导图二、知识讲解(一)zipfile模块概述zipfile模块是Python内置的用于操作ZIP归档文件的模块。它提供了创建、读取、写入、添加及列出ZIP文件的功能。(二)ZipFile类1....
- Python内置模块pydoc :文档生成器和在线帮助系统详解
-
一、引言在Python开发中,良好的文档是提高代码可读性和可维护性的关键。pydoc是Python自带的一个强大的文档生成器和在线帮助系统,它可以根据Python模块自动生成文档,并支持多种输出格式...
- Python sys模块使用教程_python system模块
-
1.知识导图2.sys模块概述2.1模块定义与作用sys模块是Python标准库中的一个内置模块,提供了与Python解释器及其环境交互的接口。它包含了许多与系统相关的变量和函数,可以用来控制P...
- Python Logging 模块完全解读_python logging详解
-
私信我,回复:学习,获取免费学习资源包。Python中的logging模块可以让你跟踪代码运行时的事件,当程序崩溃时可以查看日志并且发现是什么引发了错误。Log信息有内置的层级——调试(deb...
- 软件测试|Python logging模块怎么使用,你会了吗?
-
Pythonlogging模块使用在开发和维护Python应用程序时,日志记录是一项非常重要的任务。Python提供了内置的logging模块,它可以帮助我们方便地记录应用程序的运行时信息、错误和调...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- python计时 (73)
- python安装路径 (56)
- python类型转换 (93)
- python进度条 (67)
- python吧 (67)
- python的for循环 (65)
- python格式化字符串 (61)
- python静态方法 (57)
- python列表切片 (59)
- python面向对象编程 (60)
- python 代码加密 (65)
- python串口编程 (77)
- python封装 (57)
- python写入txt (66)
- python读取文件夹下所有文件 (59)
- python操作mysql数据库 (66)
- python获取列表的长度 (64)
- python接口 (63)
- python调用函数 (57)
- python多态 (60)
- python匿名函数 (59)
- python打印九九乘法表 (65)
- python赋值 (62)
- python异常 (69)
- python元祖 (57)