初学者RSA自学详细笔记

RSA公钥密码算法

安全性:RSA的安全性建立在“大数分解和素性检测”这一已知的著名数论难题的基础上,即:将两个大素数相乘在计算上很容易实现,但将该乘积分解为两个大素数因子的计算量是相当巨大的。

  1. 生成公钥:
选择两个互异的大素数p、q
计算n=p*q
φ(n)=(p-1)*(q-1) φ(n)>1

欧拉函数φ(n):表示小于等于n的正整数中与n互质的数的数目。特别地,因为1和和任何数的公因数都只有1,所以,1和任何数都互质。

选择一个正数e(1<e<φ(n))
(e,φ(n)) = 1即 e和φ(n)互质
Kp = (n,e) 公钥

2.生成私钥 求出正数d

e*d = 1 mod φ(n)
Ks = (d,p,q) 私钥

mod运算:即求余数运算,求一个整数x除以另一个整数y的余数,与商无关。

3.加密(明文M)
C = EKp(M)= M^e mod n

4.解密(密文C)
M = DKs (C)= C^d mod n

为避免选取容易分解的整数n,应注意:
①p和q长度不能相差太多
②p-1和q-1都应该包含大的素因子
③p-1和q-1的最大公因子要尽可能小

且为了保证RSA的安全,n的长度为1024~2048bit是比较合理的。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值