二、计算素数
质数(Prime number),又称素数,指在大于1的自然数中,除了1和该数自身外,无法被其他自然数整除的数(也可定义为只有1与该数本身两个正因数的数)。大于1的自然数若不是素数,则称之为合数(也称为合成数)。例如,5是个素数,因为其正约数只有1与5。7是个素数,因为其正约数只有1与7。而4则是个合数,因为除了1与4外,2也是其正约数。6也是个合数,因为除了1与6外,2与3也是其正约数。算术基本定理确立了素数于数论里的核心地位:任何大于1的整数均可被表示成一串唯一素数之乘积。为了确保该定理的唯一性,1被定义为不是素数。
测试n是否为素数的最基本方法为试除法。将n除以每个大于1且小于等于n的平方根之的整数,若存在一个相除为整数的结果,则n不是素数,反之则是个素数。

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
#2-10-3-2.pydef getPrimeNumbers(minNum,maxNum):pNs=[]import mathfor n in range(minNum,maxNum):for i in range(2,int(math.sqrt(n))+1): if  (n%i==0):break            else:pNs.append(n)return pNspNums=getPrimeNumbers(3000,3500)
print(pNums)

2-10-3-2.py计算3000-3500之间的素数,运行结果如下:
[3001, 3011, 3019, 3023, 3037, 3041, 3049, 3061, 3067, 3079, 3083, 3089, 3109, 3119, 3121, 3137, 3163, 3167, 3169, 3181, 3187, 3191, 3203, 3209, 3217, 3221, 3229, 3251, 3253, 3257, 3259, 3271, 3299, 3301, 3307, 3313, 3319, 3323, 3329, 3331, 3343, 3347, 3359, 3361, 3371, 3373, 3389, 3391, 3407, 3413, 3433, 3449, 3457, 3461, 3463, 3467, 3469, 3491, 3499]
三、计算公钥和私钥
1、计算p和q

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
#2-10-3-3.py
import base64
import randomdef enCodeBase64(myStr):return base64.b64encode(myStr.encode("utf8"))def deCodeBase64(myStr):return base64.b64decode(myStr).decode("utf8")strTxt="""
1978年出现了著名的RSA算法,它通常是先生成一对RSA密钥,
其中之一是保密密钥,由用户保存;
另一个为公开密钥,可对外公开,甚至可在网络服务器中注册。
为提高保密强度,RSA密钥至少为500位长,一般推荐使用1024位。
这就使加密的计算量很大。
"""def getPrimeNumbers(minNum,maxNum):pNs=[]import mathfor n in range(minNum,maxNum):for i in range(2,int(math.sqrt(n))+1): if  (n%i==0):break            else:pNs.append(n)breakreturn pNs#p,q
minN=random.randint(10000, 25000)
maxN=random.randint(minN+10000, minN+20000)
p=getPrimeNumbers(minN,maxN)
minN=random.randint(1000, 2500)
maxN=random.randint(minN+1000, minN+2000)
q=getPrimeNumbers(minN,maxN)
print(p,q)

python杂记-RSA加解密实现(2)相关推荐

  1. python杂记-RSA加解密实现(4)-加解密消息及文件

    3.消息m分段与非负整数n之间的互相转换 #!/usr/bin/env python3 # -*- coding: utf-8 -*- #2-10-3-6.py import base64 impor ...

  2. Python | Python 实现RSA加解密 验签 无 长度限制 加密解密, 分段加密

    系列文章目录 Python | Flask 解决跨域问题 文章目录 系列文章目录 为什么要分段加密 代码示例 测试 测试结果 为什么要分段加密 加密的字段长短规则如下: 加密的 plaintext 最 ...

  3. python rsa_python rsa加解密

    一. Rsa加密 import base64 from Crypto.PublicKey import RSA from Crypto.Cipher import PKCS1_v1_5 as Ciph ...

  4. python实现rsa加密解密_python实现RSA加解密

    RSA的算法涉及三个参数,n.e.d. 其中,n是两个大质数p.q的积,n的二进制表示所占用的位数,就是所谓的密钥长度. e和d是一对相关的值,e可以任意取,但要求e与(p-1)*(q-1)互质:再选 ...

  5. python openssl 证书加解密过程感觉是这样

    python openssl 证书加解密过程感觉是这样 第一步 生成2048 bit的PEM格式的RSA Key:Key.pem openssl genrsa -out Key.pem -f4 204 ...

  6. 介绍一个很好用的Rsa加解密的.Net库 Kalix.ApiCrypto

    Rsa非对称加密技术 这个就不说了,大家上网搜索都知道,公钥加密,私钥解密.当然大家也可以自己实现.这里就懒了,就去找一个现成的库,Nuget上搜索,GitHub上搜索,发现.Net的加解密库,下载量 ...

  7. python3 RSA加解密

    python3 可以使用 Crypto.PublicKey.RSA 和 rsa 生成公钥.私钥. 其中 python3.6 Crypto 库 使用 pip3 install pycryptodome ...

  8. Crypto++库在VS 2005中的使用——RSA加解密

    Crypto++库在VS 2005中的使用--RSA加解密 源代码:下载 一.   下载Crypto++ Library Crypto++ Library的官方网:http://www.cryptop ...

  9. RSA算法原理——(3)RSA加解密过程及公式论证

    上期(RSA简介及基础数论知识)为大家介绍了:互质.欧拉函数.欧拉定理.模反元素 这四个数论的知识点,而这四个知识点是理解RSA加密算法的基石,忘了的同学可以快速的回顾一遍. 一.目前常见加密算法简介 ...

最新文章

  1. 基于高分辨率的单目深度估计网络(AAAI2021)
  2. Design Pattern - Command (C#)
  3. 遗传算法入门到掌握(一)
  4. qml mousearea 点击其他地方_Qml 快速使用
  5. 年入近1亿,曾被20家VC拒绝,如今电商是他大客户,数据处处有黄金
  6. Java泛型教程–示例类,接口,方法,通配符等
  7. vc升级失败恢复快照后数据不一致问题
  8. 计算机广告制作专业老师,计算机广告制作专业专业院校诚信服务_招生梁老师...
  9. css 实现背景图片拉伸
  10. 1811114每日一句
  11. redis集群报错(error) CLUSTERDOWN Hash slot not served
  12. MPLUS 2-2-1型 中介效应模型
  13. nginx 会话保持
  14. MySQL基础与navicat使用
  15. POSTGRESQL 用户怎么乱糟糟,出自其他DB的评论, 与SCHEMA 移魂大法
  16. asp.net保存图片
  17. Vue路由懒加载(resolve),嵌套路由 3
  18. Windows 10下配置高通hexagon sdk环境
  19. 【身份证识别】基于matlab GUI BP神经网络身份证识别【含Matlab源码 2239期】
  20. Web前端——VScode打开html文件中文乱码解决办法

热门文章

  1. 经典算法:牛顿迭代法求平方根
  2. [实变函数]5.5 Riemann 积分和 Lebesgue 积分
  3. Effective C++ ——让自己习惯C++
  4. 奇怪的问题,.Net 2.0发送邮件失败...
  5. 使用SCOM常用的一些ManagementPack
  6. [Hadoop] 启动HDFS缺少服务
  7. sgu 207 Robbers
  8. 关于异步IO与同步IO的写操作区别
  9. 关于cookie 跨页面处理
  10. ubuntu安装SSH2