RSA遇上中国剩余定理
1.Introduction
最近读论文刚好用到了这个,之前只是有耳闻,没有仔细研究过,这里就好好捋一下,会逐步完善
不过貌似CRT(中国剩余定理)的实现更容易被攻击
2. RSA: Overview
rsa算法描述如下:
选择两个大素数\(p、q\),计算\(N = p*q\)(最好保证N在2048bit以上,最新的研究工作已经可以成功分解762bit的N)
计算\(\phi(N)=(p-1)*(q-1)\)
选择一个\(e\)使得\(gcd(e, \phi(n)) == 1\),e由于是作加密使用,故推荐使用小值,推荐使用3、65537(\(2^{16}+1\)),65537只有两个1bit,所以在幂运算(参加我的另一篇博客:快速指数算法)时只需要两次额外的乘法运算;此外,不需要担心使用固定值会造成的安全问题,RSA的安全性不会受影响
计算\(ed = 1 (\mod\phi(n))\),得到\(d\)值用于解密
公钥:(N, e),私钥:(N, d)
一次RSA加解密:
\[c = m^e \mod N\\
m = d^d \mod N\\
\]解释:
即$ m = (m^e)^d = m^{1\mod\phi(N)}=m^{h*\phi(N)+1}\mod N\(,由欧拉定理\)a^{\phi(n)}=1 \mod n$,得到前式等价于
\(1^h*m^1 = m\)
3. Using CRT
3.1 中国剩余定理
描述起来比较麻烦,见中国剩余定理,可以把大模数变小模数
3.2 在RSA中使用CRT
RSA中计算耗时最大的地方是解密的\(c^d\)操作,由于d值往往较大,故计算难度较高,可以使用中国剩余定理适当降低计算量。
计算私钥
下面几部分会被预计算并存入私钥:
- \(p、q\)
- \(dp = d \mod {p-1}\)
- \(dq = d \mod {q-1}\)
- \(q_{inv} = q^{-1} \mod p\)
这样最后的私钥就是\((p,q,d,dp,dq,q_{inv})\)
解密
- \(m_1 = c^{dp} \mod p\)
- \(m_2 = c^{dq} \mod q\)
- \(h = q_{inv}(m_1-m_2)\mod p\)
- 当\(m_1<m_2\)时,有些实现会这样计算\(h = q_{inv}[(m_1+\lceil{\frac{q}{p}}\rceil p)-m_2]\mod p\)
- \(m = m_2+hq \mod {p*q}\)
这样做虽然要计算两次模幂,但效率依然要比直接计算高得多。因为不管是指数还是模数都要小得多
4. 列几个常见的算法库
5 Reference
RSA遇上中国剩余定理的更多相关文章
- (伪)再扩展中国剩余定理(洛谷P4774 [NOI2018]屠龙勇士)(中国剩余定理,扩展欧几里德,multiset)
前言 我们熟知的中国剩余定理,在使用条件上其实是很苛刻的,要求模线性方程组\(x\equiv c(\mod m)\)的模数两两互质. 于是就有了扩展中国剩余定理,其实现方法大概是通过扩展欧几里德把两个 ...
- 洛谷P2480 [SDOI2010]古代猪文(费马小定理,卢卡斯定理,中国剩余定理,线性筛)
洛谷题目传送门 蒟蒻惊叹于一道小小的数论题竟能涉及这么多知识点!不过,掌握了这些知识点,拿下这道题也并非难事. 题意一行就能写下来: 给定\(N,G\),求\(G^{\sum \limits _{d| ...
- gcd,扩展欧几里得,中国剩余定理
1.gcd: int gcd(int a,int b){ ?a:gcd(b,a%b); } 2.中国剩余定理: 题目:学生A依次给n个整数a[],学生B相应给n个正整数m[]且两两互素,老师提出问题: ...
- 【bzoj3782】上学路线 dp+容斥原理+Lucas定理+中国剩余定理
题目描述 小C所在的城市的道路构成了一个方形网格,它的西南角为(0,0),东北角为(N,M).小C家住在西南角,学校在东北角.现在有T个路口进行施工,小C不能通过这些路口.小C喜欢走最短的路径到达目的 ...
- NOI 2018 屠龙勇士 (拓展中国剩余定理excrt+拓展欧几里得exgcd)
题目大意:略 真是一波三折的一道国赛题,先学了中国剩余定理,勉强看懂了模板然后写的这道题 把取出的宝剑攻击力设为T,可得Ti*x=ai(mod pi),这显然是ax=c(mod b)的形式 这部分用e ...
- POJ 1006:Biorhythms 中国剩余定理
Biorhythms Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 121194 Accepted: 38157 Des ...
- 卢卡斯定理&&中国剩余定理
卢卡斯定理(模数较小,且是质数) 式子C(m,n)=C(m/p,n/p)*C(m%p,n%p)%p 至于证明(我也不会QAQ,只要记住公式也该就好了). 同时卢卡斯定理一般用于组合数取模上 1.首先当 ...
- 《孙子算经》之"物不知数"题:中国剩余定理
1.<孙子算经>之"物不知数"题 今有物不知其数,三三数之剩二,五五数之剩七,七七数之剩二,问物几何? 2.中国剩余定理 定义: 设 a,b,m 都是整数. 如果 m ...
- POJ 1006 中国剩余定理
#include <cstdio> int main() { // freopen("in.txt","r",stdin); ; while(sca ...
随机推荐
- java实现第六届蓝桥杯加法变乘法
加法变乘法 题目描述 我们都知道:1+2+3+ - + 49 = 1225 现在要求你把其中两个不相邻的加号变成乘号,使得结果为2015 比如: 1+2+3+-+1011+12+-+2728+29+- ...
- Babel 7 安装与配置
Babel:帮我们把高级的语法(ES6)转为低级的语法 /* Babel 7.x版本 安装如下 (cnpm i @babel/cli -D) //Bab ...
- cuda 9.0
https://docs.nvidia.com/cuda/archive/9.0/index.html cuda9.0工具包
- 从程序员到项目主管再到项目总监,一个IT从业者三个职业生涯阶段的工作生活日常
这是王不留的第 8 篇原创文章 前段时间写过<王不留的十多年工作和生活的流水帐>,在知乎.简书,还有不少微信的朋友私信问我每天四点钟是如何做到的?你现在的作息时间是怎么安排的? 于是,我将 ...
- 洛谷P1255 数楼梯
题目描述 楼梯有N阶,上楼可以一步上一阶,也可以一步上二阶. 编一个程序,计算共有多少种不同的走法. 分析与代码 走n阶楼梯,无论是走一次走1阶还是2阶,总得迈出一步, 所以求n阶楼梯 ...
- spring cloud 集成分布式配置中心 apollo(单机部署apollo)
一.什么是apollo? Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境.不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限.流程治理等特性,适用 ...
- springboot的坑
No tests found for given includes:xxxx 找不到findOne()方法 可以用它的findById(id).orElse(null); 存在就会直接返回值,如果不存 ...
- wget介绍和命令总结
参考资料: https://www.cnblogs.com/ftl1012/p/9265699.html https://www.cnblogs.com/lsdb/p/7171779.html cur ...
- python-判断、循环、列表、字典
一.如何将两个列表合并成一个字典 运用dict(zip()) 例如: usernames = ['xiaohei', 'xiaobai', 'xiaoming'] passwords = ['1234 ...
- pyhton 月份和天数的计算
http://stackoverflow.com/questions/546321/how-do-i-calculate-the-date-six-months-from-the-current-da ...