最近有需求,需要研究一下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
相关文章:
成都品牌网站制作公司,成都营业执照年报网上怎么办理?
企业在线网站设计制作流程,想建设一个属于自己的企业网站,该如何去做?
深圳网站制作的公司有哪些,dido官方网站?
小说建站VPS选用指南:性能对比、配置优化与建站方案解析
,石家庄四十八中学官网?
如何基于PHP生成高效IDC网络公司建站源码?
常州自助建站工具推荐:低成本搭建与模板选择技巧
如何快速查询域名建站关键信息?
如何在IIS服务器上快速部署高效网站?
建站主机服务器选型指南与性能优化方案解析
临沂网站制作公司有哪些,临沂第四中学官网?
定制建站是什么?如何实现个性化需求?
开源网站制作软件,开源网站什么意思?
建站之星如何通过成品分离优化网站效率?
图片制作网站免费软件,有没有免费的网站或软件可以将图片批量转为A4大小的pdf?
大学网站设计制作软件有哪些,如何将网站制作成自己app?
javascript中对象的定义、使用以及对象和原型链操作小结
北京网页设计制作网站有哪些,继续教育自动播放怎么设置?
东莞专业制作网站的公司,东莞大学生网的网址是什么?
宁波自助建站系统如何快速打造专业企业网站?
实现虚拟支付需哪些建站技术支撑?
手机网站制作平台,手机靓号代理商怎么制作属于自己的手机靓号网站?
南平网站制作公司,2025年南平市事业单位报名时间?
娃派WAP自助建站:免费模板+移动优化,快速打造专业网站
如何在阿里云部署织梦网站?
巅云智能建站系统:可视化拖拽+多端适配+免费模板一键生成
Android滚轮选择时间控件使用详解
如何在局域网内绑定自建网站域名?
建站主机选哪家性价比最高?
公司网站制作需要多少钱,找人做公司网站需要多少钱?
移民网站制作流程,怎么看加拿大移民官网?
如何在宝塔面板中创建新站点?
如何挑选最适合建站的高性能VPS主机?
金*站制作公司有哪些,金华教育集团官网?
武清网站制作公司,天津武清个人营业执照注销查询系统网站?
官网建站费用明细查询_企业建站套餐价格及收费标准指南
建站之星如何助力网站排名飙升?揭秘高效技巧
,南京靠谱的征婚网站?
如何配置WinSCP新建站点的密钥验证步骤?
郑州企业网站制作公司,郑州招聘网站有哪些?
网站制作专业公司有哪些,如何制作一个企业网站,建设网站的基本步骤有哪些?
已有域名建站全流程解析:网站搭建步骤与建站工具选择
活动邀请函制作网站有哪些,活动邀请函文案?
如何在自有机房高效搭建专业网站?
建站之星后台管理如何实现高效配置?
,怎么用自己头像做动态表情包?
网站设计制作书签怎么做,怎样将网页添加到书签/主页书签/桌面?
建站ABC备案流程中有哪些关键注意事项?
北京网站制作公司哪家好一点,北京租房网站有哪些?
如何配置FTP站点权限与安全设置?
*请认真填写需求信息,我们会在24小时内与您取得联系。