非对称加密-RSA

非对称加密

非对称加密也叫公钥密码: 使用公钥加密, 使用私钥解密。

在对称密码中,由于加密和解密的密钥是相同的,因此必须向接收者配送密钥。用于解密的密钥必须被配送给接收者,这一问题称为密钥配送问题。如果使用非对称加密也可以称为公钥密码,则无需向接收者配送用于解密的密钥,这样就解决了密钥配送问题。

非对称加密中,密钥分为加密密钥和解密密钥两种。发送者用加密密钥对消息进行加密,接收者用解密密钥对密文进行解密。要理解公钥密码,清楚地区分加密密钥和解密密钥是非常重要的。加密密钥是发送者加密时使用的,而解密密钥则是接收者解密时使用的。

非对称加密中,加密密钥一般是公开的。正是由于加密密钥可以任意公开,因此该密钥被称为公钥(publickey),相对地,解密密钥是绝对不能公开的,因此称为私钥(privatekey)。公钥和私钥是一一对应的,一对公钥和私钥统称为密钥对(keypair)。

非对称加密通信流程

我们还是假设Alice要给Bob发送一条消息,Alice是发送者,Bob是接收者,而这一次窃听者Eve依然能够窃所到他们之间的通信内容。

在公开非对称加密通信中,通信过程是由接收者Bob来启动的。

  1. Bob生成一个包含公钥和私钥的密钥对。
    私钥由Bob自行妥善保管。
  2. Bob将自己的公钥发送给Alice
    Bob的公钥被窃听者Eve截获也没关系。
    将公钥发送给Alice,表示Bob请Alice用这个公钥对消息进行加密并发送 给他。
  3. Alice用Bob的公钥对消息进行加密。
    加密后的消息只有用Bob的私钥才能够解密。
    虽然Alice拥有Bob的公钥,但用Bob的公钥是无法对密文进行解密的。
  4. Alice将密文发送给Bob
    密文被窃听者Eve截获也没关系。Eve可能拥有Bob的公钥,但是用Bob的公钥是无法进行解密的。
  5. Bob用自己的私钥对密文进行解密。

请参考下图, 看一看在Alice和Bob之间到底传输了哪些信息。其实它们之间所传输的信息只有两个:Bob的公钥以及用Bob的公钥加密的密文。由于Bob的私钥没有出现在通信内容中,因此窃听者Eve无法对密文进行解密。
在这里插入图片描述
窃听者Eve可能拥有Bob的公钥,但是Bob的公钥只是加密密钥,而不是解密密钥,因此窃听者Eve就无法完成解密操作。

RSA

RSA是使用最广泛的公钥密码算法
RSA是一种非对称加密算法,它的名字是由它的三位开发者,即RonRivest、AdiShamir和LeonardAdleman 的姓氏的首字母组成的(Rivest-Shamir-Leonard)。

RSA公钥和私钥的产生

RSA算法由两个密钥,即公钥和私钥组成。
1)准备两个非常大的素数p和q(转换成二进制后1024个二进制位或者更多,位数越多越难破解);
2)计算p和q的乘积N=pq;
3)计算M=(p-1)(q-1),这里的m为n的欧拉函数;
4)找到一个数E(1 < E < m),满足gcd(M, E)=1,(即e和m互素);
5)计算E在模M域上的逆元D(满足ED mod M = 1,则称E和D在模M域上互为逆元);
6)公钥和私钥生成完毕:(N, E)为公钥,(N, D)为私钥;

RSA加密

在RSA中,明文、密钥和密文都是数字。RSA的加密过程可以用下列公式来表达,如下:
在这里插入图片描述
加密公式中出现的两个数一一一E和N,到底都是什么数呢?RSA的加密是求明文的E次方modN,因此只要知道E和N这两个数,任何人都可以完成加密的运算。所以说,E和N是RSA加密的密钥,也就是说,E和N的组合就是公钥。
E是加密(Encryption)的首字母,N是数字(Number)的首字母。有一个很容易引起误解的地方需要大家注意一一E和N这两个数并不是密钥对(公钥和私钥的密钥对)。E和N两个数才组成了一个公钥,因此我们一般会写成 “公钥是(E,N)” 或者 “公钥是{E, N}" 这样的形式,将E和N用括号括起来。

RSA解密

在这里插入图片描述
这里所使用的数字N和加密时使用的数字N是相同的。数D和数N组合起来就是RSA的解密密钥,因此D和N的组合就是私钥。只有知道D和N两个数的人才能够完成解密的运算。
D是解密〈Decryption)的首字母,N是数字(Number)的首字母。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值