rsa笔记

互质的一些特征:
1. 任意两个质数构成互质关系,比如13和61。
2. 一个数是质数,另一个数只要不是前者的倍数,两者就构成互质关系,比如3和10。
3. 如果两个数之中,较大的那个数是质数,则两者构成互质关系,比如97和57。
4. 1和任意一个自然数是都是互质关系,比如1和99。
5. p是大于1的整数,则p和p-1构成互质关系,比如57和56。
6. p是大于1的奇数,则p和p-2构成互质关系,比如17和15。

欧拉函数:
欧拉函数是少于或等于n的数中与n互质的数的数目。例如φ(8)=4,因为1,3,5,7均和8互质。

同余的概念:
如果存在一个正整数m与两个整数a,b,如果a-b能够被m整除,那么a和b模m同余。记为:a≡b(mod m)

模指数运算:
先做指数运算,取其结果再做模运算。例如,python中 pow(3,3,11)的结果是5

欧拉定理,暂不证明:
如果a,n互质,则pow(a, φ(n))≡1(mod n)
或者说,a的φ(n)次方减去1,可以被n整除。

模反元素:
如果两个正整数a和n互质,那么一定可以找到整数b,使得ab-1被n整除。
ab≡1(mod n)。
因为:
pow(a, φ(n))≡1(mod n)
a*pow(a, φ(n)-1)≡1(mod n)
所以b=pow(a, φ(n)-1)

暂不证明的内容: 
如果n可以分解成两个互质的整数之积,n=p*q,则φ(n)=φ(p*q)=φ(p)*φ(q)

1. 选择两个大质数 p, q。
2. 计算 n = p*q
2. 计算 φ(n) = (p-1)(q-1)。因为p,q互质,所以φ(n)=φ(p*q)=φ(p)*φ(q),又因为p和q都是质数,所以φ(p)*φ(q)=(p-1)*(q-1)。
4. 找出一个与φ(n)互质的数e,且 1<e<φ(n)。(实际应用中,e常常选择65537)。
5. 计算d,使得d*e≡1(mod φ(n))。(可以利用扩展欧几里得算法)。
公钥:{e, n} 私钥:{d, n}

加密操作:
c≡pow(m, e, n)
解密操作:
m=pow(c, d, n)

其他:
有无可能在已知n和e的情况下,推导出d?
(1)ed≡1 (mod φ(n))。只有知道e和φ(n),才能算出d。
(2)φ(n)=(p-1)(q-1)。只有知道p和q,才能算出φ(n)。
(3)n=pq。只有将n因数分解,才能算出p和q。
对于比较小的n进行因数分解是比较容易的,比如3233=61*53,但是对大整数进行因数分解是比较困难的,目前只有暴力破解方法。

在线质分解因数: http://www.factordb.com
质因数分解工具:yafu

生成私钥:
openssl genrsa -out private.pem 1024
根据私钥生成公钥:
openssl rsa -in private.pem -pubout -out public.pem
查看私钥:
openssl rsa -in private.pem -text
查看公钥:
openssl rsa -in public.pem -pubin -text
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值