RSA公钥加密算法

(只讲方法,不讲理论)

规则:

有计算机的地方就有密码,有密码的地方就不得不提SRA算法(由发明人Rivest,Shamir,Adleman名字命名)。这是最典型的目前也是应用最广泛的非对称加密算法,遵循余下规则:

a.乙方生成公钥和私钥。公钥是公开的任何人都可以得到,私钥是保密的

b.甲方获取公钥,然后用来对信息加密

c.乙方得到加密后的信息,用私钥解密

基础知识:

1.欧拉函数欧拉定理

欧拉函数:用于解决给定任意整数n,在小于等于n的整数中与n互质数字的个数

如果两个正整数a和n互质,则n的欧拉函数 φ(n) 可以让下面的等式成立:

也就是说,a的φ(n)次方被n除的余数为1。或者说,a的φ(n)次方减去1,可以被n整除

2.模反元素

如果两个正整数a和n互质,那么一定可以找到整数b,使得 ab-1 被n整除,或者说ab被n除的余数是1。

这时,b就叫做a的"模反元素"

算法步骤:

第一步,随机选取两个不等的质数p,q。比如61和53(越大越好)

第二步,计算乘积n,n=61*53=3233(n的二进制长度就是密钥的长度,实际情况下,长度通常大于等于1024)

第三步,计算n的欧拉函数φ(n),根据公式φ(n) = (p-1)(q-1)得到结果3120

第四步,随机选取一个1<e<φ(n)并且与φ(n)互质的数字,比如17

第五步,计算e和φ(n)的模反元素d,d=2753

第六步,将n和e封装成公钥(3233,17),n和d成密钥(3233,2753)

实际应用中,公钥和私钥的数据都采用ASN.1格式表达(实例)。

第七步,加密和解密

a.加密

需要用公钥(n,e)

比如需要加密信息m(必须是小于n的整数),假设是65

加密就是直接计算出c,其中me=c(mod n)

这里得到c=2790,将加密结果发送给私钥

b.解密

需要私钥(n,d)

只需要解决cd=m(mod n)可以得到m(这个等式是一定成立的)



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值