RSA 算法笔记
来源:互联网 发布:深圳市软件企业 退税 编辑:程序博客网 时间:2024/06/06 00:21
数学概念
同余定理
如果两个数 a、b,模上某个数 p,得到的余数相同,则 a 和 b 同余,记作:
a≡b(modp)
例如:
又如:
这样做的好处,是能够将一个非常大的数字变成一个限定范围内的数字,简化运算。例如以下计算:
可以分步为:
=>
=>
=>
欧拉函数
在 [1 , n) 中,与 n 互质的正整数的个数,用
互质,指的是公约数只有 1 的两个整数–>互质百科传送门
例如:
又如 p 和 q 都是质数:
p = 17,q = 23
欧拉定理
若
p ,a 为正整数,且p ,a 互质,则:
aφ(p)≡1(modp)
如果 a = 4,p = 17,则
模反元素
如果两个正整数
例如:
3 和 5 互质,那么 3 的模反元素就是 7,因为
RSA 操作与原理
RSA 有关参数
P:明文C:密文两个质数p、q : N = p * qe:公钥d:私钥
生成私钥的过程
随机选定两个大质数
p ,q 计算
N=p×q 计算
φ(N)=(p−1)(q−1) 选取正整数
e ,满足 1 <e <φ(N) , 且e 与φ(N) 互质计算
e 的模反元素d ,其中,e 、d 、N 之间的关系如下:e×d≡1(modφ(N))
于是就得到公钥
加密过程
解密过程
例 :
假设
=>
=>
由此得出
加密解密验证
=>
=>
公式推导
根据
=>
=>
根据
=>
=>
根据欧拉定理
=>
=>
RSATool 使用
Factor N
在 Modulus(N) 中输入一个数,点击 Factor N,可以对这个数进行因式分解。
Calc. D
根据公式:
E 是可以随便为一个数,一般都是 10001h。另外,常说的 RSA 有多少位,指的是N 有多少位。
程序练习
–>程序下载(带大数运算工具及 RSATool)
程序逻辑
用 ida 打开程序,在 main 函数里可以看到一长串的数字,该数字是
启动程序,要求输入 username 和 vericode。程序会根据输入的 username 生成一个公钥
如果解密后的结果和 CheckOk 相等,那么解密成功。
破解思路
程序中的的明文实际上为 0x6B6F006B4F6B63656843(即 Check.ok)。但是由于该程序是比较字符串 CheckOk,也就是说,只检查了 橘色 部分,前面的2个字节的并没有比较,这是该程序的 疏漏之处。
在Username中输入 keep 后,打开 OD 在 0x004015DF 下断点, edx 处的地址,是
RSA算法中一般都会使用大数运算,蓝框内显示的是数字的总字节数;红框内的数字从左往右数,为 0x6408FCD6289E9A7A1750886EB8198697。
我们已经得到了
由于该程序中的
e 和d 必须是质数,且满足以下公式:
e×d≡1(modφ(N))
但有时得出的e 和d 并不能满足以上公式。该程序的处理,是通过将e 加 1 的方式,直到以上公式满足条件为止。
既然知道了
- RSA 算法笔记
- RSA算法学习笔记(未完)
- 【笔记】如何快速生成随机数 RSA算法
- RSA算法
- RSA算法
- RSA 算法
- RSA 算法
- RSA算法
- RSA算法
- RSA算法
- RSA算法
- RSA算法
- RSA算法
- RSA算法
- RSA算法
- RSA算法
- RSA算法
- RSA 算法
- 性能测试过程及模型构建
- 网页登录数据库(七)
- Windows10 64位系统下成功安装Caffe(CPU+VS 2013)
- 020day(指针的基本概念和用法,意义和互相赋值)
- Redis配置主从架构,实现读写分离
- RSA 算法笔记
- Python Imaging Library: ImagePalette Module(图像调色板模块)
- jp第一天
- [python]库
- sql语句实现简单查询以及索引查询
- MLE、ERM和MAP、SRM
- 卡住:图片上传并回显
- NOIP2017赛前模拟 Game DP (2017.10.30)
- numpy中的mean()函数