RSA非对称加密算法

对称加密

简单举个例子,A要给B发信息是“love”,A和B商量好,加密过程是把信息的每个字母向后挪动一位(这里假设发送的都是字母,比如要发送“a”,但实际发送出去的则是“b”),解密过程则是将收到的信息向前挪动一位(比如收到的是“b”,解密出来的则是“a”)。那么A先将"love"的每个字母往后挪一位,转换成“mpwf”,B收到“mpwf”,然后把"mpwf"每个字母往前挪一位,转换成"love"。
这只是举个例子,但是实际的加密方式比这个复杂的多。
这种方式是A,B均知道解密过程。

非对称加密

这里还是假设A给B发信息。但是使用非对称加密算法加密的。
A只知道怎么加密,但是不知道怎么解密,A怎么加密也是B告诉的。类似于,A要给B发信息,那么B就给A一个盒子,告诉A,A把要发送的信息放进盒子里,锁上就行,钥匙在B那,只有B能开这个盒子。
非对称加密算法相对于对称加密算法,就是秘钥只掌握在一个人手里。
那么RSA怎么做到的呢?(以下的代数都是正整数)

  1. 发送方选择两个大质数,分别是p,q,N = p * q。
  2. 使用欧拉函数 f(N) = (p-1)(q-1) = f,计算小于等于N,且与N互质的数。
  3. 选择一个e,1<e<f,且e与f互质。
  4. e*d%f = 1,求出d。
  5. 那么就得到了私钥(N,e),公钥(N,d)。

公钥是用来加密的,私钥是用来解密的。

举个例子
为了方便计算,这里选择两个小的质数作为例子。

  1. 假设B选择的两个质数是p=2,q=11,N=2*11=22
  2. f=(2-1)(11-1) = 10
  3. 假设e选择3,e=3
  4. d = 7
  5. 私钥(22,3),公钥(22,7)

假设A发送的信息是:9

加密过程:
9**7 % 22 = 4782969 = 15

则B接收到的信息是 15

解密过程:
15**3 % 22 = 3375 = 9

这种方法只适合仅有B有A的公钥。不是很安全。
更安全的做法是A做两次加密:

  • 第一次:A使用A的私钥加密
  • 第二次:A用B的公钥加密

B解密也需要进行两次解密

  • 第一次:B使用B的私钥解密
  • 第二次:B使用A的公钥解密

这种双重加密保证了只有B才能将明文转换为密文。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值