最近有需求,需要研究一下RSA加密解密安全;在网上百度了一下例子文章,很少有文章介绍怎么保存、传输、打印加密后的文本信息,都是千篇一律的。直接在一个脚本,加密后的文本信息赋于变量,然后立马调用解密。仔细想了一下RSA加密解密的过程,确定有二端,一端为:加密端,一端为解密端,一般不在同一台机器。在这里,我只模拟了保存在文件,然后再读出来;关于怎以通过网络传输,也是大同小异。

用RSA加密后的密文,是无法直接用文本显示,因为存在一些无法用文本信息编码显示的二进制数据。对于保存,网络传输,打印不乱码,需要通base64编码进行转换;base64编解码能把一些无法直接用文件本信息编码的二进制数据,转换成常规的二进制数据。
#/usr/bin/env python
# -*- coding: utf-8 -*-
import rsa
import sys
import base64
# 打印 python 版本 与 windows 系统编码
print("---- 1 ----")
print(sys.version)
print(sys.getdefaultencoding())
print(sys.getfilesystemencoding())
# 先生成一对密钥,然后保存.pem格式文件,当然也可以直接使用
print("---- 2 ----")
(pubkey, privkey) = rsa.newkeys(1024)
pub = pubkey.save_pkcs1()
print(type(pub))
pubfile = open('public.pem','w+')
pubfile.write(pub.decode('utf-8'))
pubfile.close()
print("---- 3 ----")
pri = privkey.save_pkcs1()
print(type(pri))
prifile = open('private.pem','w+')
prifile.write(pri.decode('utf-8'))
prifile.close()
# load公钥和密钥
print("---- 4 ----")
message = 'dPabdbGDpFTrwwgydVafdlsadlfsal%46645645s'
print('message:',type(message))
with open('public.pem') as publickfile:
p = publickfile.read()
print(type(p))
pubkey = rsa.PublicKey.load_pkcs1(p.encode('utf-8'))
with open('private.pem') as privatefile:
p = privatefile.read()
print(type(p))
privkey = rsa.PrivateKey.load_pkcs1(p.encode('utf-8'))
# 用公钥加密、再用私钥解密
crypto = rsa.encrypt(message.encode('utf-8'),pubkey)
print(crypto)
print("---- 5 ----")
print('crypto:',type(crypto))
print('cry_base64:',base64.encodestring(crypto))
print('cry_base64_utf8:',base64.encodestring(crypto).decode('utf-8'))
# 保存到本地文件
cry_file = open('cry_file.txt','w+')
cry_file.write(base64.encodestring(crypto).decode('utf-8'))
cry_file.close()
print("---- 6 ----")
# 从本地文件读取
cry_file = open('cry_file.txt','r')
cry_text = ''
for i in cry_file.readlines():
cry_text += i
print('cry_text_type:',type(cry_text))
print('cry_text:',cry_text)
print('cry_base64:',cry_text.encode('utf-8'))
crypto_tra = base64.decodestring(cry_text.encode('utf-8'))
print("---- 7 ----")
assert crypto == crypto_tra
print(crypto)
print("---- 8 ----")
plaintext = rsa.decrypt(crypto,privkey)
assert message == plaintext.decode('utf-8')
print(plaintext.decode('utf-8'))
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持!
# python
# rsa
# rsa加密解密
# python实现RSA加密(解密)算法
# python使用rsa加密算法模块模拟新浪微博登录
# Python下实现的RSA加密/解密及签名/验证功能示例
# Python实现RSA加密解密
# python实现rsa加密实例详解
# python中的RSA加密与解密实例解析
# Python实现的rsa加密算法详解
# python rsa实现数据加密和解密、签名加密和验签功能
# Python使用RSA库加密和解密
# 如何用Python实现RSA加密算法
# 二进制数
# 都是
# 网络传输
# 加密解密
# 公钥
# 在这里
# 我只
# 一台
# 想了
# 可以直接
# 大同小异
# 能把
# 再用
# 转换成
# 再读
# 在网上
# 编解码
# 赋于
# sys
# windows
相关文章:
如何快速使用云服务器搭建个人网站?
网站制作软件有哪些,制图软件有哪些?
如何在宝塔面板创建新站点?
如何快速搭建高效香港服务器网站?
如何解决ASP生成WAP建站中文乱码问题?
武清网站制作公司,天津武清个人营业执照注销查询系统网站?
建站VPS推荐:2025年高性能服务器配置指南
网站网页制作电话怎么打,怎样安装和使用钉钉软件免费打电话?
建站之星手机一键生成:多端自适应+小程序开发快速建站指南
,怎么在广州志愿者网站注册?
专业网站制作企业网站,如何制作一个企业网站,建设网站的基本步骤有哪些?
Swift中swift中的switch 语句
内部网站制作流程,如何建立公司内部网站?
如何在阿里云完成域名注册与建站?
建站之星24小时客服电话如何获取?
C++如何编写函数模板?(泛型编程入门)
如何在万网主机上快速搭建网站?
保定网站制作方案定制,保定招聘的渠道有哪些?找工作的人一般都去哪里看招聘信息?
打鱼网站制作软件,波克捕鱼官方号怎么注册?
如何制作算命网站,怎么注册算命网站?
定制建站如何定义?其核心优势是什么?
外汇网站制作流程,如何在工商银行网站上做外汇买卖?
网站制作外包价格怎么算,招聘网站上写的“外包”是什么意思?
如何用搬瓦工VPS快速搭建个人网站?
如何批量查询域名的建站时间记录?
家庭建站与云服务器建站,如何选择更优?
黑客如何利用漏洞与弱口令入侵网站服务器?
行程制作网站有哪些,第三方机票电子行程单怎么开?
怎么制作一个起泡网,水泡粪全漏粪育肥舍冬季氨气超过25ppm,可以有哪些措施降低舍内氨气水平?
怎么将XML数据可视化 D3.js加载XML
建站ABC备案流程中有哪些关键注意事项?
家族网站制作贴纸教程视频,用豆子做粘帖画怎么制作?
建站之星×万网:智能建站系统+自助建站平台一键生成
详解免费开源的.NET多类型文件解压缩组件SharpZipLib(.NET组件介绍之七)
如何用好域名打造高点击率的自主建站?
香港服务器选型指南:免备案配置与高效建站方案解析
南宁网站建设制作定制,南宁网站建设可以定制吗?
如何快速选择适合个人网站的云服务器配置?
网站制作免费,什么网站能看正片电影?
视频网站app制作软件,有什么好的视频聊天网站或者软件?
如何选择靠谱的建站公司加盟品牌?
创业网站制作流程,创业网站可靠吗?
广州网站建站公司选择指南:建站流程与SEO优化关键词解析
php条件判断怎么写_ifelse和switchcase的使用区别【对比】
建站之星图片链接生成指南:自助建站与智能设计教程
建站之星代理费用多少?最新价格详情介绍
网站制作服务平台,有什么网站可以发布本地服务信息?
如何破解联通资金短缺导致的基站建设难题?
上海网站制作网页,上海本地的生活网站有哪些?最好包括生活的各个方面的?
广平建站公司哪家专业可靠?如何选择?
*请认真填写需求信息,我们会在24小时内与您取得联系。