RSA算法(二)

 

关于RSA涉及到的一些数学知识(提及简单的概念和定义):

 (无奈不会在博客中写公式,只好放截图了)

1.互质关系:

         如果两个正整数,除了1以外,没有其他公因子,我们就称这两个数是互质关系。

2.欧拉函数:

         任意给定正整数n,在小于等于n的正整数中有多少个与n构成互质关系的数,计算这个值的方法就叫做欧拉函数 。以下是欧拉函数的通式:

         

         在RSA计算中用到了两个推论:

         (1)如果n可以分解为两个互质的整数的积,即n = p  q,则有:

                 

         (2)如果n为质数,则 

                   

3.同余:

         两个整数a、b,若它们除以整数m所得的余数相等,则称a与b对于模m同余。记作:

                 

4.欧拉定理:

         欧拉定理是一个关于同余的性质,若n、a为正整数,且n、a互质,则有:

                 

        也就是说,a的 (n)次方被n除的余数为1。

5.模反元素:

         如果两个正整数a和n互质,那么一定可以找到整数b,使得 ab-1 被n整除,或者说ab被n除的余数是1。而且也可以看出模反元素不止一个。

 

熟悉了上面的这些概念,我们接下来就可以看一下RSA算法的实现过程:

(在此申明,下面的算法流程是参考了阮一峰先生的博客,关于博主介绍的RSA算法真的很详细,而且简单易懂,在此表示感谢!)

         据说密码学中举例经常会用到Alice和Bob这两个人,哈哈,我们就以这两个人举例:

1.假设Alice要和Bob进行通信,首先Alice会随机选择两个不同的质数

         p=31和q=37

2.计算p和q的乘积n

         n= p x q = 31 x 37 = 1147

         n的长度就是密钥的长度,1147写成二进制位10001111011,一共11为,所以这个密钥就是11位,一般我们使用的RSA密钥为1024位。

3.计算n的欧拉函数

         这时根据我们上面介绍欧拉函数的两个推论可以变换计算公式如下:

         

4.随机选择一个整数e

        

         假设Alice选择的e值为67

5.计算e对于 的模反元素d 即

        

         将我们的值代入,并将这个式子转化一下:67d - 1080k = 1 (k为整数)

         我们可以计算出一组值:k= 25   d = 403 (计算的方式就不多说了,我是用程序跑出来的)。

6.将n、e封装成公钥,n、d封装成私钥

         最终我们计算得到:n=1147,e=67,d=403所以公钥就是(1147,67),私钥就是(1147,403)

 

7.数据加解密操作

          有了公钥和私钥,就可以发数据了,假设Bob要向Alice发送需要加密的信息m,这时就用公钥对m进行加密。(这里的m必须是整数,并且必须小于n,字符串可以取ascii值或unicode值)。

       

至此,整个加解密的过程执行完毕。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值