码迷,mamicode.com
首页 > 编程语言 > 详细

golang:常用加密算法学习总结之非对称加密

时间:2020-11-13 12:58:16      阅读:12      评论:0      收藏:0      [点我收藏+]

标签:密码学   private   字母   出现   数据   对称加密   enc   strong   没有   

公开密钥密码学(英语:Public-key cryptography)也称非对称式密码学(英语:Asymmetric cryptography)是密码学的一种演算法。常用的非对称加密算法有 RSA DSA ECC 等。公开密钥加密

非对称加密算法使用公钥私钥来加解密。

  • 公钥与私钥是成对出现的。
  • 多个用户(终端等)使用的密钥交公钥,只有一个用户(终端等)使用的秘钥叫私钥。
  • 使用公钥加密的数据只有对应的私钥可以解密;使用私钥加密的数据只有对应的公钥可以解密。

非对称加密通信过程

https://upload.wikimedia.org/wikipedia/commons/thumb/0/03/Public_key_encryption_alice_to_bob.svg/langzh-250px-Public_key_encryption_alice_to_bob.svg.png

下面我们来看一看使用公钥密码的通信流程。假设Alice要给Bob发送一条消息,Alice是发送者,Bob是接收者,而这一次窃听者Eve依然能够窃所到他们之间的通信内容。 参考自维基百科

⑴ Alice与bob事先互不认识,也没有可靠安全的沟通渠道,但Alice现在却要透过不安全的互联网向bob发送信息。
⑵ Alice撰写好原文,原文在未加密的状态下称之为明文 plainText
⑶ bob使用密码学安全伪随机数生成器产生一对密钥,其中一个作为公钥 publicKey,另一个作为私钥 privateKey
⑷ bob可以用任何方法传送公钥publicKey 给Alice,即使在中间被窃听到也没问题。
⑸ Alice用公钥publicKey把明文plainText进行加密,得到密文 cipherText
⑹ Alice可以用任何方法传输密文给bob,即使中间被窃听到密文也没问题。
⑺ bob收到密文,用私钥对密文进行解密,得到明文 plainText
由于其他人没有私钥,所以无法得知明文;如果Alice,在没有得到bob私钥的情况下,她将重新得到原文。

技术图片
技术图片

RSA

RSA是一种非对称加密算法,是由罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)在1977年一起提出,并以三人姓氏开头字母拼在一起组成的。

RSA公钥和密钥的获取:随机选择两个大的素数,p q \(N = pq\)
RSA加密过程:\(cipherText = plainText ^ E mod N(RSA加密\) \((N,e)\)为公钥,\((N,d)\)为私钥。
RSA解密过程:\(plainText = cipherText^ D mod N(RSA加密\)

golang:常用加密算法学习总结之非对称加密

标签:密码学   private   字母   出现   数据   对称加密   enc   strong   没有   

原文地址:https://www.cnblogs.com/LC161616/p/13916531.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!