密码学—RSA公钥算法Python程序
RSA流程
- 选取两个素数p,q,保密p,q
- 计算出n = p×q ,公开n
- 计算φ(n)=(p-1)(q-1) ,保密φ(n)
- 选择一个数e ,e满足:e < φ(n) , gcd(e,φ(n)) = 1,公开e
- 计算出d, d×e=1 mod φ(n),保密d
- 加密m:c = me mod n
- 解密c :m = cd mod n
细节
在RSA中加密加密并不难,主要是在现实生活中加密的文本的一般对应在转为ASCII的时候对应的数字会特别大,所以假如说我们选择的p×q=n的n不够大,也就是说明文对应的数字大于n这大小的时候就会导致加密失败。
一定要注意模数范围,如果你要加密的数字超过你所在的模数范围就会加密失败,你的要加密的数字必须在你选取的模数范围内,其实这个模数也就是明文空间。(密钥空间: φ(n))。
怎么看空间:就是看你计算式子的模数,好比密钥d,计算的式子是模 φ(n),那密钥空间就是 φ(n)。
明文加解密都是模n,那空间就是你选取好的两个素数相乘后的n大小
知识点
求欧拉函数程序
#求欧拉数
def eulrFun(num):
lis = []
if ToolCode.isPrime(num):
return num - 1;
ToolCode.standard_Decpo2(num, lis)
for i in range(0, len(lis)):
if lis[i] != 0:
num *= (1 - 1 / (i + 2))
return int(num) def isPrime(num):
'''
判断是否为素数,返回bool值
:param num:
:return: True/False
'''
for i in range(2, int(math.sqrt(num) + 1)):
if num % i == 0:
return False
return True
def standard_Decpo2(num, lis):
result = num
power = 0
sum = 1
for i in range(2, int(num + 1)):
while True:
if num % i == 0:
num /= i
power += 1
else:
break
lis.append(power)
sum *= math.pow(i, power)
if sum == result:
return lis
power = 0解一次同余方程,也就是求d
#求出d
def return_D(e, eulr_n):
num = ToolCode.oneCongru(e, 1, eulr_n)
if num is not None:
return num
else:
return None
def oneCongru(a, b, m):
if math.gcd(a, m) == 1 or b % math.gcd(a, m) == 0:
for i in range(0, m):
if (a * i) % m == b:
return i
else:
print(a, "无解")
return None
密码学—RSA公钥算法Python程序的更多相关文章
- 模拟退火算法Python编程(2)约束条件的处理
1.最优化与线性规划 最优化问题的三要素是决策变量.目标函数和约束条件. 线性规划(Linear programming),是研究线性约束条件下线性目标函数的极值问题的优化方法,常用于解决利用现有的资 ...
- 模拟退火算法Python编程(3)整数规划问题
1.整数规划问题 整数规划问题在工业.经济.国防.医疗等各行各业应用十分广泛,是指规划中的变量(全部或部分)限制为整数,属于离散优化问题(Discrete Optimization). 线性规划问题的 ...
- Python rsa公私钥生成 rsa公钥加解密(分段加解密)-私钥加签验签实战
一般现在的SAAS服务提供现在的sdk或api对接服务都涉及到一个身份验证和数据加密的问题.一般现在普遍的做法就是配置使用非对称加密的方式来解决这个问题,你持有SAAS公司的公钥,SAAS公司持有你的 ...
- rsa字符串格式公钥转换python rsa库可识别的公钥形式
在爬虫分析的时候,经常在网页上看到如下格式的rsa公钥: MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDC7kw8r6tq43pwApYvkJ5laljaN9BZb21 ...
- 基于python的RSA解密算法
摘要 网上有很多关于RSA的解密脚本,欧拉函数.欧几里得函数什么的,对于一个大专生的我来说,一窍不通,至此经历了三天三夜,我翻阅了RSA的加密原理,以及其底层算法,专研出了一套我自己的解密算法,尚有不 ...
- 【密码学】RSA公钥密码体制
RSA公钥密码体制是美国麻省理工学院(MIT)的三位科学家Rivest.Shamir.Adleman于1978年提出的,简称RSA公钥秘密系统.实际上,RSA稍后于MH背包公钥密码实用系统,但它的影响 ...
- [区块链] 密码学——椭圆曲线密码算法(ECC)
今天在学椭圆曲线密码(Elliptic Curve Cryptography,ECC)算法,自己手里缺少介绍该算法的专业书籍,故在网上查了很多博文与书籍,但是大多数博客写的真的是...你懂的...真不 ...
- 使用RSA加密在Python中逆向shell
i春秋翻译小组-Neo(李皓伟) 使用RSA加密在Python中逆向shell 这是一个关于使用RSA加密编程逆向shell的python教程. 我想提一下,这篇文章更多的是关于理解shell中涉及的 ...
- RSA公钥文件解密密文的原理分析
前言 最近在学习RSA加解密过程中遇到一个这样的难题:假设已知publickey公钥文件和加密后的密文flag,如何对其密文进行解密,转换成明文~~ 分析 对于rsa算法的公钥与私钥的产生,我们可以了 ...
- 你竟然在公钥中下毒!——如何在RSA公钥中添加后门
原文:http://www.hackdig.com/?01/hack-17893.htm 分享到: 当我知道它是如何运行时,我惊得下巴都掉了.这是一个非常简单的手法,但这篇文章会颠覆你之前对RSA的看 ...
随机推荐
- #ST表,并查集#洛谷 3295 [SCOI2016]萌萌哒
题目 分析 可以发现除了最高位只能填 1 到 9,其它位置还可以填 0. 直接用并查集找连通块会超时,如果将这些区间的合并可以下传到子区间的合并那样就可以了. 考虑ST表的逆操作,合并时直接合并两个极 ...
- SQL 日期处理和视图创建:常见数据类型、示例查询和防范 SQL 注入方法
SQL处理日期 在数据库操作中,处理日期是一个关键的方面.确保插入的日期格式与数据库中日期列的格式匹配至关重要.以下是一些常见的SQL日期数据类型和处理方法. SQL日期数据类型 MySQL日期数据类 ...
- C# Lock的用法
当我们使用线程的时候,效率最高的方式当然是异步,即各个线程同时运行,其间不相互依赖和等待.但当不同的线程都需要访问某个资源的时候,就需要同步机制了,也就是说当对同一个资源进行读写的时候,我们要使该资源 ...
- 详讲openGauss 5.0 单点企业版如何部署_Centos7_x86
本文分享自华为云社区<openGauss 5.0 单点企业版部署_Centos7_x86>,本文作者:董小姐 本文档环境:CentOS7.9 x86_64 4G1C40G python2. ...
- HMS Core 3D精准室内定位技术,打造“店铺级”出行体验
2022年4月28日,在华为折叠旗舰及全场景新品发布上,华为Mate Xs 2折叠屏手机搭载由HMS Core定位服务(Location Kit)提供的3D精准室内定位技术,为用户提供了"店 ...
- Next.js 实战
0x1 CSR,SSR,SSG CSR 客户端渲染(Client-Side Rendering).常见 B 端 Web 应用开发模式,前后端分离,服务器压力相对更轻,渲染工作在客户端进行,服务器直接返 ...
- Flask搭建APP统一管理平台
主页效果: 1.从数据库中获取所有APP的信息,每个卡片上展示APP名称.bundle id.版本构建历史记录,系统类型等构建信息 2.支持查询筛选,模糊查询 3.点击历史记录跳转APP历史记录详情页 ...
- PTA前三次题目集总结
以下内容是我对PTA三次习题作业最后一题的思路,源码以及总结 学到的java知识大多都来自写题目集 这些题目对我对java的认知与学习起到了不小的帮助 答题判题程序-1 题目内容 设计实现答题程序,模 ...
- PTA三次作业
1.前言: 第一次作业难度较大,从无到有的设计,涉及到的主要类有Paper,Question,AnswerPaper,Main,主要题目方向为字符串判断与字符串处理(提取有效信息),判断对错算总分,配 ...
- RocketMQ 之 IoT 消息解析:物联网需要什么样的消息技术?
前言: 从初代开源消息队列崛起,到 PC 互联网.移动互联网爆发式发展,再到如今 IoT.云计算.云原生引领了新的技术趋势,消息中间件的发展已经走过了 30 多个年头. 目前,消息中间件在国内许多行业 ...