对称加密与非对称加密的区别_RSA 非对称加密原来是这么一回事

222f427b795932b94780bd028af5ff61.png

1、对称加密

对称加密,是指在加密和解密时使用同一个秘钥。

553bd3ab233b64cc27b43028145faf29.png

对称加密

2、非对称加密

与对称加密算法不同,非对称加密需要公钥和私钥,公钥和私钥是一对,如果用公钥对数据进行加密,只有用对应的私钥才能解密。公钥是公开的,秘钥是自己保存的。

78335f20bb5556115dd53bff3db736c2.png

3、RSA:非对称加密鼻祖

○ RSA 原理

17f5cff69064c2b889b3908cc8a4fa09.png

① 找出质数 :

P = 3, Q = 11

② 计算公共模数:

N = P * Q = 33

③ 欧拉函数:

φ(N) = (P-1)(Q-1) = 2 * 10 = 20

④ 计算公钥 E

1 < E < φ(N), E 是整数且和 φ(N) 必须互质数(公因数只有 1 的两个非零自然数,叫做互质数)。

E 的取值范围 {3, 7, 9, 11, 13, 17, 19},

取 E = 3 , 满足 E 和 φ(N) 是互质数。

⑤ 计算私钥 D

E * D % φ(N) = 1;

3 * D % 20 = 1;

===>>> D = 7

⑥ 加密

加密的明文 M = 2;

C = M^E mod N;

===>>> 加密后的密文为:C = 8

⑦ 解密

M =C^D mod N;

===>>> M = 2;

○ RSA Java实现

使用 Java 实现 RSA 非对称加密

54680f670bad984fe148a88d6599c26e.png

测试:

e3ad471bee450c41a0f80c3a11efd3e6.png

输出结果:

9e47cade005f1dacd661a7193bd829c4.png

欢迎关注 @Python大星 ,一个会点 Python 的 Java 程序员。如果你有更好的想法,欢迎留言,一起探讨,想说你就说啊!

@Python大星 | 文

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值