非对称加密算法RSA加密传输数据python3源代码实现
2019独角兽企业重金招聘Python工程师标准>>>
import rsa# RSA 算法规定:
# 待加密的字节数不能超过密钥的长度值除以 8 再减去 11NBIT = 4096
CAN_ENCODE_LEN = NBIT // 8 - 11
PER_ENCODE_LEN = CAN_ENCODE_LEN - (CAN_ENCODE_LEN % 2)
PER_DECODE_LEN = CAN_ENCODE_LEN + 11PUBKEY_STR = """"""PRIKEY_STR = """"""def gen_pem_file():(public_key, private_key) = rsa.newkeys(NBIT) # rsa-4096 加密得到公钥和私钥# 将公钥保存到文件with open('public.pem', 'wb') as file_pub:file_pub.write(public_key.save_pkcs1())# 将私钥保存到文件with open('private.pem', 'wb') as file_pri:file_pri.write(private_key.save_pkcs1())if not PUBKEY_STR:# 取出公钥try:with open('public.pem', 'rb') as __file_pub:PUBKEY_STR = __file_pub.read()except FileNotFoundError:gen_pem_file()with open('public.pem', 'rb') as __file_pub:PUBKEY_STR = __file_pub.read()if not PRIKEY_STR:# 取出私钥try:with open('private.pem', 'rb') as __file_pri:PRIKEY_STR = __file_pri.read()except FileNotFoundError:gen_pem_file()with open('public.pem', 'rb') as __file_pub:PUBKEY_STR = __file_pub.read()with open('private.pem', 'rb') as __file_pri:PRIKEY_STR = __file_pri.read()PUBKEY = rsa.PublicKey.load_pkcs1(PUBKEY_STR)
PRIKEY = rsa.PrivateKey.load_pkcs1(PRIKEY_STR)# 加密字符串string
def rsa_str_encode(s):s = s.encode('utf-16')len_s = len(s)res = b''res_len=0while len_s - res_len > PER_ENCODE_LEN:res += rsa.encrypt(s[res_len:res_len+PER_ENCODE_LEN], PUBKEY) # 使用公钥去加密字符串res_len+=PER_ENCODE_LENprint('RSA加密 %d ... %.2f%%' % (res_len, 100* res_len/len_s))res += rsa.encrypt(s[res_len:], PUBKEY) # 使用公钥去加密字符串return res# 解密字符串string
def rsa_str_decode(s):len_s = len(s)res = b''res_len=0while len_s - res_len > PER_DECODE_LEN:res += rsa.decrypt(s[res_len:res_len+PER_DECODE_LEN], PRIKEY) # 用私钥去解密res_len+=PER_DECODE_LENprint('RSA解密 %d ... %.2f%%' % (res_len, 100 * res_len / len_s))res += rsa.decrypt(s[res_len:], PRIKEY)return res.decode('utf-16')# 加密字符串string list
def rsa_strs_encode(s):s = s.encode('utf-16')len_s = len(s)res_len=0while len_s - res_len > PER_ENCODE_LEN:yield rsa.encrypt(s[res_len:res_len+PER_ENCODE_LEN], PUBKEY) # 使用公钥去加密字符串res_len+=PER_ENCODE_LENyield rsa.encrypt(s[res_len:], PUBKEY) # 使用公钥去加密字符串# 解密字符串string list
def rsa_strs_decode(ss):for i, line in enumerate(ss):res = rsa.decrypt(line, PRIKEY)try:yield res.decode('utf-16')except UnicodeDecodeError:import tracebackprint(traceback.format_exc())if __name__ == '__main__':en_str = rsa_str_encode('dsde军鳄科!@#¥cvr$#2#@1~~!@!#,.,2p4pfvwdwefv1234678435092430r098ygoiufvre2vdvwdvwfvw,.efkiv3evclkvs你'*12)de_crypt = rsa_str_decode(en_str) # 用私钥去解密print(de_crypt)en_strs = rsa_strs_encode('dsde军鳄科!@#¥cvr$#2#@1~~!@!#,.,2p4pfvwdwefv1234678435092430r098ygoiufvre2vdvwdvwfvw,.efkiv3evclkvs你' * 122)de_crypts = rsa_strs_decode(en_strs) # 用私钥去解密# print(''.join(de_crypt))for _ in de_crypts:print(_)
转载于:https://my.oschina.net/readerror/blog/2885260
非对称加密算法RSA加密传输数据python3源代码实现相关推荐
- 非对称加密算法--RSA加密原理及运用
密码学是在编码与破译的斗争实践中逐步发展起来的,并随着先进科学技术的应用,已成为一门综合性的尖端技术科学. 密码学发展史 在说RSA加密算法之前, 先说下密码学的发展史.其实密码学的诞生,就是为了运用 ...
- rsa加密原理数学证明_非对称加密算法——RSA加密原理及数学推导
说明:原创不易,著作权仅归作者本人所有,转载请注明出处. 建议:建议阅读时间15min+.证明过程可能看着枯燥,需要动手. 一. RSA是什么? 看到标题的第一瞬间,先想一下,RSA是什么呢?百度百 ...
- Java加密技术(四)——非对称加密算法RSA
转自:http://snowolf.iteye.com/blog/381767 接下来我们介绍典型的非对称加密算法--RSA RSA 这种算法1978年就出现了,它是第一个既能用于数据加密也能 ...
- java js 非对称加密算法_Java加密技术(四)——非对称加密算法RSA
Java非对称加密算法rsa 接下来我们介绍典型的非对称加密算法--RSA RSA 这种算法1978年就出现了,它是第一个既能用于数据加密也能用于数字签名的算法.它易于理解和操作,也很流行.算法的名字 ...
- Java进阶(七)Java加密技术之非对称加密算法RSA
Java加密技术(四)--非对称加密算法RSA 非对称加密算法--RSA 基本概念 非对称加密算法是一种密钥的保密方法. 非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(priv ...
- python实现非对称加密算法_Python3非对称加密算法RSA实例详解
本文实例讲述了Python3非对称加密算法RSA.分享给大家供大家参考,具体如下: python3 可以使用 Crypto.PublicKey.RSA 和 rsa 生成公钥.私钥. 其中 python ...
- 网络安全_密码学实验_非对称加密算法RSA
网络安全_密码学实验_非对称加密算法RSA 一.实验环境 二.非对称加密RSA 1.理解RSA算法原理 2.加密过程 解密过程 一.实验环境 PyCharm 2019.2.4 (Professiona ...
- 非对称加密算法-RSA
2019独角兽企业重金招聘Python工程师标准>>> 1.概述 RSA有两个密钥,一个是公开的,称为公开密钥:一个是私密的,称为私密密钥. 特点: 公开密钥是对大众公开的,私密密钥 ...
- 在非对称加密算法RSA中,假设“大”素数p=5,q=11,试给出计算过程。
文章目录 1. 题目在非对称加密算法RSA中,假设"大"素数p=5,q=11,试给出计算过程. 2. 分析步骤 3. 抄作业简单粗暴看这里 4. 参考 1. 题目在非对称加密算法R ...
最新文章
- python snap7 plc db_python snap7讀寫s7-1200PLC的數據(PLC的I、Q、M區)
- 一个http请求发送到后端的详细过程
- openstack 热迁移(Live Migration)和冷迁移(Cold Migration)
- mf怎么使mysql信息分区_细聊MySQL的分区功能
- ssm_layui_billmanagersystem账单管理系统(全栈开发)
- android button 图片不缩放,ImageButton如何让图片按比例缩放不被拉伸
- 7-2 有理数比较 (10 分)
- html能在hade中注释吗,A第1章 HTML超文本标记语言(1-20)OK.doc
- 20160205 - Windows 10 家庭版没有组策略
- 论文审稿回复LaTeX模板
- PSP超强自制系统3.52 M33最新傻瓜安装指南(Dark Alex-OE系统接班人)
- 雪球产品定价-蒙特卡罗模拟法
- JavaWeb中的表单提交和超链接请求传递参数
- EVO Evaluation of SLAM 5 --- ORB-SLAM3 精度和性能效果评估
- JS判断数组中是否存在某个值或者某个对象的值
- oss图片无法在网站中显示
- u盘中的隐藏文件该怎样恢复
- C#適應練習:幾種常見設計模式的實現
- 发明计算机作文300字,关于科学发明的作文300字(共7篇)
- Android WebService(基于SOAP协议)个人记录总结
热门文章
- 【进阶技术】一篇文章搞掂:Spring高级编程
- NGINX生命周期-转
- 最近和朋友微信卖螃蟹有点偏离重心了
- poj 3660 传递闭包 **
- uva10891Game of sum
- 隐藏网页文件的后缀(IIS测试通过)!
- signature=54cb1c123491dc1a268a21f3502cccfc,Modelling information routing with noninterference
- 全国计算机等级考试题库二级C操作题100套(第78套)
- c语言中error c2601,C 语言 dd.cpp(46) : error C2601: 'main' : local function definitions are illegal...
- java 类调用情况_java 如何调用类?情况如下