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源代码实现相关推荐

  1. 非对称加密算法--RSA加密原理及运用

    密码学是在编码与破译的斗争实践中逐步发展起来的,并随着先进科学技术的应用,已成为一门综合性的尖端技术科学. 密码学发展史 在说RSA加密算法之前, 先说下密码学的发展史.其实密码学的诞生,就是为了运用 ...

  2. rsa加密原理数学证明_非对称加密算法——RSA加密原理及数学推导

    说明:原创不易,著作权仅归作者本人所有,转载请注明出处. 建议:建议阅读时间15min+.证明过程可能看着枯燥,需要动手. 一.  RSA是什么? 看到标题的第一瞬间,先想一下,RSA是什么呢?百度百 ...

  3. Java加密技术(四)——非对称加密算法RSA

    转自:http://snowolf.iteye.com/blog/381767 接下来我们介绍典型的非对称加密算法--RSA RSA     这种算法1978年就出现了,它是第一个既能用于数据加密也能 ...

  4. java js 非对称加密算法_Java加密技术(四)——非对称加密算法RSA

    Java非对称加密算法rsa 接下来我们介绍典型的非对称加密算法--RSA RSA 这种算法1978年就出现了,它是第一个既能用于数据加密也能用于数字签名的算法.它易于理解和操作,也很流行.算法的名字 ...

  5. Java进阶(七)Java加密技术之非对称加密算法RSA

    Java加密技术(四)--非对称加密算法RSA 非对称加密算法--RSA 基本概念 非对称加密算法是一种密钥的保密方法. 非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(priv ...

  6. python实现非对称加密算法_Python3非对称加密算法RSA实例详解

    本文实例讲述了Python3非对称加密算法RSA.分享给大家供大家参考,具体如下: python3 可以使用 Crypto.PublicKey.RSA 和 rsa 生成公钥.私钥. 其中 python ...

  7. 网络安全_密码学实验_非对称加密算法RSA

    网络安全_密码学实验_非对称加密算法RSA 一.实验环境 二.非对称加密RSA 1.理解RSA算法原理 2.加密过程 解密过程 一.实验环境 PyCharm 2019.2.4 (Professiona ...

  8. 非对称加密算法-RSA

    2019独角兽企业重金招聘Python工程师标准>>> 1.概述 RSA有两个密钥,一个是公开的,称为公开密钥:一个是私密的,称为私密密钥. 特点: 公开密钥是对大众公开的,私密密钥 ...

  9. 在非对称加密算法RSA中,假设“大”素数p=5,q=11,试给出计算过程。

    文章目录 1. 题目在非对称加密算法RSA中,假设"大"素数p=5,q=11,试给出计算过程. 2. 分析步骤 3. 抄作业简单粗暴看这里 4. 参考 1. 题目在非对称加密算法R ...

最新文章

  1. python snap7 plc db_python snap7讀寫s7-1200PLC的數據(PLC的I、Q、M區)
  2. 一个http请求发送到后端的详细过程
  3. openstack 热迁移(Live Migration)和冷迁移(Cold Migration)
  4. mf怎么使mysql信息分区_细聊MySQL的分区功能
  5. ssm_layui_billmanagersystem账单管理系统(全栈开发)
  6. android button 图片不缩放,ImageButton如何让图片按比例缩放不被拉伸
  7. 7-2 有理数比较 (10 分)
  8. html能在hade中注释吗,A第1章 HTML超文本标记语言(1-20)OK.doc
  9. 20160205 - Windows 10 家庭版没有组策略
  10. 论文审稿回复LaTeX模板
  11. PSP超强自制系统3.52 M33最新傻瓜安装指南(Dark Alex-OE系统接班人)
  12. 雪球产品定价-蒙特卡罗模拟法
  13. JavaWeb中的表单提交和超链接请求传递参数
  14. EVO Evaluation of SLAM 5 --- ORB-SLAM3 精度和性能效果评估
  15. JS判断数组中是否存在某个值或者某个对象的值
  16. oss图片无法在网站中显示
  17. u盘中的隐藏文件该怎样恢复
  18. C#適應練習:幾種常見設計模式的實現
  19. 发明计算机作文300字,关于科学发明的作文300字(共7篇)
  20. Android WebService(基于SOAP协议)个人记录总结

热门文章

  1. 【进阶技术】一篇文章搞掂:Spring高级编程
  2. NGINX生命周期-转
  3. 最近和朋友微信卖螃蟹有点偏离重心了
  4. poj 3660 传递闭包 **
  5. uva10891Game of sum
  6. 隐藏网页文件的后缀(IIS测试通过)!
  7. signature=54cb1c123491dc1a268a21f3502cccfc,Modelling information routing with noninterference
  8. 全国计算机等级考试题库二级C操作题100套(第78套)
  9. c语言中error c2601,C 语言   dd.cpp(46) : error C2601: 'main' : local function definitions are illegal...
  10. java 类调用情况_java 如何调用类?情况如下