1.Introduction

最近读论文刚好用到了这个,之前只是有耳闻,没有仔细研究过,这里就好好捋一下,会逐步完善

不过貌似CRT(中国剩余定理)的实现更容易被攻击

2. RSA: Overview

rsa算法描述如下:

  1. 选择两个大素数\(p、q\),计算\(N = p*q\)(最好保证N在2048bit以上,最新的研究工作已经可以成功分解762bit的N)

  2. 计算\(\phi(N)=(p-1)*(q-1)\)

  3. 选择一个\(e\)使得\(gcd(e, \phi(n)) == 1\),e由于是作加密使用,故推荐使用小值,推荐使用3、65537(\(2^{16}+1\)),65537只有两个1bit,所以在幂运算(参加我的另一篇博客:快速指数算法)时只需要两次额外的乘法运算;此外,不需要担心使用固定值会造成的安全问题,RSA的安全性不会受影响

  4. 计算\(ed = 1 (\mod\phi(n))\),得到\(d\)值用于解密

  5. 公钥:(N, e),私钥:(N, d)

  6. 一次RSA加解密:

    \[c = m^e \mod N\\
    m = d^d \mod N\\
    \]

  7. 解释:

    即$ 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遇上中国剩余定理的更多相关文章

  1. (伪)再扩展中国剩余定理(洛谷P4774 [NOI2018]屠龙勇士)(中国剩余定理,扩展欧几里德,multiset)

    前言 我们熟知的中国剩余定理,在使用条件上其实是很苛刻的,要求模线性方程组\(x\equiv c(\mod m)\)的模数两两互质. 于是就有了扩展中国剩余定理,其实现方法大概是通过扩展欧几里德把两个 ...

  2. 洛谷P2480 [SDOI2010]古代猪文(费马小定理,卢卡斯定理,中国剩余定理,线性筛)

    洛谷题目传送门 蒟蒻惊叹于一道小小的数论题竟能涉及这么多知识点!不过,掌握了这些知识点,拿下这道题也并非难事. 题意一行就能写下来: 给定\(N,G\),求\(G^{\sum \limits _{d| ...

  3. gcd,扩展欧几里得,中国剩余定理

    1.gcd: int gcd(int a,int b){ ?a:gcd(b,a%b); } 2.中国剩余定理: 题目:学生A依次给n个整数a[],学生B相应给n个正整数m[]且两两互素,老师提出问题: ...

  4. 【bzoj3782】上学路线 dp+容斥原理+Lucas定理+中国剩余定理

    题目描述 小C所在的城市的道路构成了一个方形网格,它的西南角为(0,0),东北角为(N,M).小C家住在西南角,学校在东北角.现在有T个路口进行施工,小C不能通过这些路口.小C喜欢走最短的路径到达目的 ...

  5. NOI 2018 屠龙勇士 (拓展中国剩余定理excrt+拓展欧几里得exgcd)

    题目大意:略 真是一波三折的一道国赛题,先学了中国剩余定理,勉强看懂了模板然后写的这道题 把取出的宝剑攻击力设为T,可得Ti*x=ai(mod pi),这显然是ax=c(mod b)的形式 这部分用e ...

  6. POJ 1006:Biorhythms 中国剩余定理

    Biorhythms Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 121194   Accepted: 38157 Des ...

  7. 卢卡斯定理&&中国剩余定理

    卢卡斯定理(模数较小,且是质数) 式子C(m,n)=C(m/p,n/p)*C(m%p,n%p)%p 至于证明(我也不会QAQ,只要记住公式也该就好了). 同时卢卡斯定理一般用于组合数取模上 1.首先当 ...

  8. 《孙子算经》之"物不知数"题:中国剩余定理

    1.<孙子算经>之"物不知数"题 今有物不知其数,三三数之剩二,五五数之剩七,七七数之剩二,问物几何? 2.中国剩余定理 定义: 设 a,b,m 都是整数.  如果 m ...

  9. POJ 1006 中国剩余定理

    #include <cstdio> int main() { // freopen("in.txt","r",stdin); ; while(sca ...

随机推荐

  1. java实现第六届蓝桥杯九数分三组

    九数分三组 题目描述 1~9的数字可以组成3个3位数,设为:A,B,C, 现在要求满足如下关系: B = 2 * A C = 3 * A 请你写出A的所有可能答案,数字间用空格分开,数字按升序排列. ...

  2. 【JavaScript】原生js实现:强制保留2位小数(由于toFixed()报错)

    function decimal(x) { var f = parseFloat(x); if (isNaN(f)) { alert("请输入数字!"); return; } va ...

  3. 二叉树的层次序列化和反序列化-----stringstream

    string serialize(TreeNode* root) {//层序便利,将空的子节点也放入到字符串 ostringstream out; queue<TreeNode*> q; ...

  4. tensorflow2.0学习笔记第一章第一节

    一.简单的神经网络实现过程 1.1张量的生成 # 创建一个张量 #tf.constant(张量内容,dtpye=数据类型(可选)) import tensorflow as tf import num ...

  5. QToolTip 设置提示信息

    import sys from PyQt5.QtWidgets import (QWidget, QToolTip, QPushButton, QApplication) from PyQt5.QtG ...

  6. 09.Django-数据库优化

    Django查询数据库性能优化 现在有一张记录用户信息的UserInfo数据表,表中记录了10个用户的姓名,呢称,年龄,工作等信息. models文件 from django.db import mo ...

  7. Accord.NET重启4.0 开发

    Accord.NET Framework是在AForge.NET基础上封装和进一步开发来的.功能也很强大,因为AForge.NET更注重与一些底层和广度,而Accord.NET Framework更注 ...

  8. 深入理解Js数组

    深入理解Js数组 在Js中数组存在两种形式,一种是与C/C++等相同的在连续内存中存放数据的快数组,另一种是HashTable结构的慢数组,是一种典型的字典形式. 描述 在本文中所有的测试都是基于V8 ...

  9. @bzoj - 3724@ PA2014Final Krolestwo

    目录 @description@ @solution@ @accepted code@ @details@ @description@ 你有一个无向连通图,边的总数为偶数. 设图中有k个奇点(度数为奇 ...

  10. LR脚本信息函数-lr_user_data_point

    Loadrunner中lr_user_data_point.lr_user_data_point_instance两个函数可以用来记录一条自定义的Vuser运行数据,并将其输出到测试结果中,最后可以通 ...