欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

公钥与私钥

最编程 2024-06-26 19:48:10
...
国产数据库圈,为啥那么多水货?”

工作到现在有时候对公钥和私钥的概念不是很清晰,查阅一些资料,用这篇文章来做个概念层面的总结,以便加深理解。

一、公钥算法与私钥算法

1、私钥算法

私钥算法,又称对称加密算法,之所以叫对称,是因为加密的密钥和解密的密钥是相同的,正是因为这个特性,所以导致密钥不能公开,同一密钥即可以用来加密,也用来解密。常见如DES算法和AES算法。

2、公钥算法

公钥算法,也称 非对称加密算法,这种算法加密和解密的密码不一样,一个是公钥,一个是私钥,特征如下:

  • 公钥和私钥一般成对出现
  • 公钥公开,私钥只有自己保存
  • 公钥加密的数据只有私钥可以解密
  • 用私钥加密的数据只有公钥可以解密
  • 公钥可以解密,反推,必然是对应的私钥进行的加密动作
  • 私钥解密,反推,必然是对应的公钥进行的加密动作

二、用途--实现数据的安全传输

要实现数据的安全传输,就要对数据进行加密。我们介绍下非对称算法,过程大致如下:

  1. 首先 接收方 生成一对密钥,私钥和公钥
  2. 接着 接收方将公钥发给 发送方
  3. 发送方拿到公钥后对数据进行加密,再发送给接收方
  4. 接收方拿到数据后,用私钥进行解密

如此,保证了数据的安全性和传输过程中防篡改的特性。

三、对信息进行数字签名

除了保证数据的安全传输外,公钥体系的另一个用途就是对数据进行签名。通常数字签名是用来验证发送方的身份并帮助保护数据的完整性。

举个例子:一个sender A想要发一份资料给大家,用自己的私钥对资料进行加密,即签名。这样一来,所有接收到资料的人都可以用发送者的公钥进行验证,解密成功后,证明这个资料是A发来的。引出数字签名的作用,有如下两点:

  1. 保证信息是由签名着自己签名发送的,签名着不能否认或难以否认;
  2. 保证信息自签发后收到的整个过程中,未曾被中间环节做任何修改。

四、公钥算法的缺点

万事万物都不是完美的,有优点就会有缺点,对于公钥机制来说,它的缺点就是效率很低,比常用的私钥算法(DES和AES)慢一两个数量级都是可能的。所以公钥体系的适用场景不宜在大量原始信息加密的场景,但是为了兼顾这种场景,提出了一种兼顾安全和效率的方式,即结合使用公钥算法和私钥算法:

  1. 首先 sender 使用对称算法对原始信息进行加密
  2. receiver通过公钥机制生成一对密钥,一个公钥,一个私钥
  3. receiver 将公钥发送给 sender
  4. sender 用公钥对 对称加密算法的密钥进行加密,并发送给receiver
  5. receiver用私钥进行解密得到对称加密算法的密钥
  6. sender 再把加密的原始信息发送给 receiver
  7. receiver使用对称算法的密钥进行解密

我画了个时序图来帮助理解这个过程,如下:

总结:

  1. 每个用户都有一对公钥和私钥
    1. 私钥用来解密和签名,是给自己用的
    2. 公钥是公开的,用于加密和验证签名,是给别人用的
  2. 当该用户发送文件时,用私钥签名,别人用给他给的公钥解密,可以保证该信息是由他发送的。即,数字签名。
  3. 当该用户接受到文件时,别人用他的公钥加密,他用私钥解密,可以保证信息只能由他看到,即,安全传输。