全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

python rsa 加密解密

最近有需求,需要研究一下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小时内与您取得联系。