RSA公钥加密算法与Diffie-Hellman密钥交换

RSA公钥加密算法:

       历史背景:最初的公钥方案于1977年由Ron Rivest、Adi Shamir 和Len Adleman在MIT

                        中提出的。

       原理:对于某一明文块M和密文块C,

                     加密:C=Me mod n

                     解密:M=Cd mod n        

       密钥的生成:

                    1、  选择p、q:p、q都是素数且p不等于q

                    2、  n=p*q

                    3、  计算φ(n), φ(n)=(p-1)(q-1)

                    4、  计算整数e :gcd(φ(n),e)= 1:1 < e < φ(n) eφ(n)互素且eφ(n)

                    5、  计算d:de mod φ(n)=1

                    6、  公钥:KU={e、n}

                    7、  私钥:KR={d、n}


        密钥生成算法的证明:

                    M= Cd mod n =(Me mod n)d mod n= Med mod n

                    现证明(Med-1)mod n =1     (1)即可

                    Med-1= Mφ(n)*k

                    Mφ(n)*k mod n = (Mφ(n) mod n)kmod n

                                             = ((Mp-1 mod n)q-1 mod n)k mod n

                                             = ((Mp-1 mod p)q-1mod n)k mod n

                    因为p为素数,所以由费马定理可以得到:Mp-1 mod p=1

                 (1)式得证

 

Diffie-Hellman密钥交换:

       目的:使得两个用户能够安全的交换密钥,供以后传递消息时使用。

       数论基础:定义素数p的本原根,它是一个整数,且它的幂能生成1~p-1所有整数的数。设p

                        的本原根 为a,那么有:a mod p、a2 mod p、……、ap-1modp   各不相同,

                        但他们组成了1~p-1之间整数的置换。且对于任意小于p的整数b和p的本原根a,

                        能找到位于0与p-1之间唯一的指数 i  有 b=aimod p。

       算法如下:假设有两个用户A和B,他们之间先互相公开素数p和p的本原根a,首先A和B各选

                        择一个随机整数XA与XB,并分别计算:YA = aXA mod p,YB = aXBmod p,然后

                        公开YA和YB,最后 双方算得密钥:K=(YBXA mod p =(YAXB mod p。

       算法证明:K=(YBXA mod p

                          =(aXB mod p)XA mod p

                          =  aXA*XB mod p

                          =(aXA mod p)XB mod p

                          =(YAXB mod p

       用途:

                    1、  简单的密钥交换协议:假设用户A希望能与用户B建立连接,并在此连接上用

                            密钥加密消息,那么首先A生成一个一次性随机数XA计算出YA发给B,B随

                            机生成XB计算出YB发给A,这样两个人就都能计算出密钥了。

                    2、  一组用户各自生成持续时间很长的X,并计算出Y,将所有Y以及p和a都放入中

                            央目录里面,任何时候有人想给对方发送加密消息,只需要到中央目录中去取

                            对方的Y,算出密钥即可。这种方法提供保密性和一定程度上的认证。

        缺陷:  不能有效防范中间人攻击。


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值