公钥私钥

本文介绍了加密与认证的基本概念,解释了公钥与私钥的作用,并详细阐述了基于公开密钥的加密过程与认证过程的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

加密和认证  首先我们需要区分加密和认证这两个基本概念。
  加密是将数据资料加密,使得非法用户即使取得加密过的资料,也无法获取正确的资料内容,所以数据加密可以保护数据,防止监听攻击。其重点在于数据的安全性。身份认证是用来判断某个身份的真实性,确认身份后,系统才可以依不同的身份给予不同的权限。其重点在于用户的真实性。两者的侧重点是不同的。
  公钥和私钥  其次我们还要了解公钥和私钥的概念和作用。
  在现代密码体制中加密和解密是采用不同的密钥(公开密钥),也就是非对称密钥密码系统,每个通信方均需要两个密钥,即公钥和私钥,这两把密钥可以互为加解密。公钥是公开的,不需要保密,而私钥是由个人自己持有,并且必须妥善保管和注意保密。
  公钥私钥的原则:
  1. 一个公钥对应一个私钥。 
  2. 密钥对中,让大家都知道的是公钥,不告诉大家,只有自己知道的,是私钥。 
  3. 如果用其中一个密钥加密数据,则只有对应的那个密钥才可以解密。 
  4. 如果用其中一个密钥可以进行解密数据,则该数据必然是对应的那个密钥进行的加密。 
  非对称密钥密码的主要应用就是公钥加密和公钥认证,而公钥加密的过程和公钥认证的过程是不一样的,下面我就详细讲解一下两者的区别。
  基于公开密钥的加密过程  比如有两个用户Alice和Bob,Alice想把一段明文通过双钥加密的技术发送给Bob,Bob有一对公钥和私钥,那么加密解密的过程如下:
  1. Bob将他的公开密钥传送给Alice。 
  2. Alice用Bob的公开密钥加密她的消息,然后传送给Bob。 
  3. Bob用他的私人密钥解密Alice的消息。 
  上面的过程可以用下图表示,Alice使用Bob的公钥进行加密,Bob用自己的私钥进行解密。
公钥密钥 - Haile - Haile 的博客
  基于公开密钥的认证过程  身份认证和加密就不同了,主要用户鉴别用户的真伪。这里我们只要能够鉴别一个用户的私钥是正确的,就可以鉴别这个用户的真伪。
  还是Alice和Bob这两个用户,Alice想让Bob知道自己是真实的Alice,而不是假冒的,因此Alice只要使用公钥密码学对文件签名发送给Bob,Bob使用Alice的公钥对文件进行解密,如果可以解密成功,则证明Alice的私钥是正确的,因而就完成了对Alice的身份鉴别。整个身份认证的过程如下:
  1. Alice用她的私人密钥对文件加密,从而对文件签名。 
  2. Alice将签名的文件传送给Bob。 
  3. Bob用Alice的公钥解密文件,从而验证签名。 
  上面的过程可以用下图表示,Alice使用自己的私钥加密,Bob用Alice的公钥进行解密。
公钥密钥 - Haile - Haile 的博客
### 公钥私钥的概念 公钥(Public Key)是一种加密技术中的开放密钥,通常用于加密数据或将身份验证信息传递给第三方。它的主要特点是任何人都可以获得并使用它来加密信息[^1]。由于其公开性质,公钥不需要像传统密钥那样严格保护。 相比之下,私钥(Private Key)是一个高度敏感的秘密密钥,仅由特定实体持有并保管。它是用来解密那些用对应公钥加密的信息的关键工具[^3]。为了确保通信的安全性隐私性,私钥必须妥善保存,防止泄露给未经授权的人员。 ### 使用方法 在实际应用中,如果Alice希望向Bob发送一条安全消息,则可以采用如下方式: - Bob会事先生成一对匹配的公钥私钥,并将他的公钥分享出去。 - Alice利用此公钥对她的原始消息进行加密处理后再传输给Bob。 - 接收端的Bob凭借自己持有的唯一对应的私钥解开这条经过加密消息内容[^2]。 这种机制不仅保障了信息传送过程中的安全性,还能够实现数字签名等功能以确认发件人的真实性。 另外需要注意的是,在某些场景下也可以反向操作——即先用私钥加密再用公钥解密,这主要用于证明某条信息确实来源于声称的那个主体,因为只有真正的源才能提供相应的私钥来进行初始阶段的操作[^3]。 ```python from Crypto.PublicKey import RSA from Crypto.Cipher import PKCS1_OAEP # 生成密钥对实化对象 key = RSA.generate(2048) # 获取私钥字符串形式表达 private_key_string = key.export_key() # 导出公钥作为外部可见版本 public_key_string = key.publickey().export_key() message = b'Hello, this is a secret message!' rsa_public_key = RSA.import_key(public_key_string) cipher = PKCS1_OAEP.new(rsa_public_key) encrypted_message = cipher.encrypt(message) print(f"Encrypted Message: {encrypted_message}") ``` 以上代码片段展示了如何基于Python库创建RSA类型的公私钥对以及执行基本的数据加密流程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值