首页 > 其他分享 >加解密:公钥、私钥和证书

加解密:公钥、私钥和证书

时间:2023-03-01 13:24:18浏览次数:57  
标签:公钥 私钥 证书 加解密 解密 加密 数据

参考:

https://blog.csdn.net/qq_25933249/article/details/100065093

理解公钥和私钥首先要区分加密和认证这两个概念!

加密和认证

加密是将数据资料加密,使别人即使获取加密数据也无法获取正确的资料内容,重点在于数据的安全性。
认证是是确定数据的真实发送方,使别人无法伪造或冒充,重点在于用户的真实性。

公钥和私钥

公钥和私钥通常称非对称加密(又称 不对称加密)
使用公钥和私钥的目的是为了安全的数据传输,必须实现如下目的:

发送方将数据加密,在数据传输过程中不能被别人看到真实数据内容
接收方能确定数据是发送方发送的数据,不是别人冒充。

首先解释公钥和私钥的意义和作用:

公钥:是公布出去给别人用的,可以被很多人获取。用来加密和验签
私钥:只能自己持有,并且不可以被其他人知道,用来解密和签名
公钥和私钥的作用:公钥加密私钥解密数据,私钥加密公钥解密。

一个公钥对应一个私钥

密钥对中,让大家都知道的是公钥,自己知道是私钥
如果用其中一个密钥加密数据,则只有对应的那个密钥才能解密
如果用其中一个密钥可以进行解密数据,则该数据必然由对应密钥进行加密

密钥包括公钥和私钥

要达到数据安全传输的目的,必须发送方和接收方都持有对方的公钥和自己私钥,即任意一方持有自己的私钥和对方的公钥。

为了数据的安全性:加密

A需要使用B的公钥来给数据加密,这样只有B的私钥才可以解密数据,这样保证了数据的安全性,这是数字签名。

为了保证数据发送方的真实性:认证

A需要使用自己的私钥来个数据加密,这样其他人用A的公钥进行解密,由于只有A私钥加密的数据,A的公钥才能解密,所以他人用A的公钥若能解密此数据,则证实数据是由A发送的,若不能解密,则证明数据不是用A的私钥加密,即不是A发送的,这样保证了送法的真实性。

证书:

证书是为公钥做认证,为了使公钥真实可信,防止他人伪造公钥;证书颁发 机构(证书中心CA)会用自己的私钥对用户的公钥和相关信息进行加密,生成”数字证书“,然后证书中心会公布自己的公钥给所有人,用来让用户使用此公钥验证”数字证书“是否由CA颁发,即是否真实可信,产生证书的场景:

A给B发信息:

首先A用Hash函数对要发送的数据实体生成摘要(digest),这个过程是不可逆。
A使用自己的私钥对这个摘要进行加密,生成数字签名(signature),并将此签名连同要发送的数据实体一起发送给B.
B收到A发送过的数据后,首先用A的公钥数字签名进行解密,得到摘要,从而证明数据确实来自A,因为只有A有私钥。
B再对接收到的数据实体进行Hash函数,如果得到的结果和上一步摘要一致,则证明数据实体没有被篡改过。
如上,如果C偷偷将B持有的A公钥换成自己的公钥,而B不知道公钥已被替换,那么以后C就可以使用冒充A给B发送信息,而B相信此信息来自A。
为了解决这一问题,需要对B持有的A公钥做认证,从而确定此公钥确实是A的公钥,而不是其他人篡改过的!而认证机构必须是第三方可信赖的机构,就是CA,由此发送过程就变成如下:
A发给B数据的时候,除了要发送签名和数据实体,还要发送CA颁发的证书。
B接收到A发送过来的数据后,首先用CA的公钥去解密证书,如果能解,表明这个证书里的信息可信赖,从而得到证书里A的公钥,然后B再用到后的公钥去做下一步动作。

注意:
以上前提必须是CA是可信赖的,CA证书是不可伪造的!
上边A给B发送数据只实现了身份确认,数据未被修改过,但是没有保证数据是安全的,即数据传输的过程中可以被第三人看到数据内容,要想实现安全的数据传输,A还要做进一步工作,即用B的公钥给数据加密,这样只有B才可以解密,从而保证了数据的安全性。

由上再次总结:

证书分为公钥证书和私钥证书,每个人的公钥,私钥证书不一样,但是肯定是一一对应的。
加密技术:公钥证书加密,私钥证书解密
签名技术:私钥证书加密,公钥证书解密
对于一方来说,持有对方公钥(即证书,因为公钥放在证书里),就可以验证对方身份,并且保证发送给对方数据的安全性。

对方对己方要想做到这一点,则要持有己方的公钥,即:

加密和签名技术相结合才能实现,机密性,完整性,不可否认性。
证书是未了保证密钥的真实性!没有证书,谈不上非对称加密。

 

标签:公钥,私钥,证书,加解密,解密,加密,数据
From: https://www.cnblogs.com/tkzc2013/p/17167800.html

相关文章

  • 【转载】一文看懂HTTPS、证书机构(CA)、证书、数字签名、私钥、公钥
    说到https,我们就不得不说tls/ssl,那说到tls/ssl,我们就不得不说证书机构(CA)、证书、数字签名、私钥、公钥、对称加密、非对称加密。这些到底有什么用呢,正所谓存在即合理,这篇......
  • OPENSSL RSA 与JAVA C++ RSA 生成 公钥 私钥
    客户端和服务端通信一般可能会采用非对称加密,这样服务端私钥加密,客服端解密,客户端加密,服务端解密。服务端采用JAVA,这个很方便,客户端因为是多平台,采用OPENSSL可能会遇到的问......
  • Mac 配置SSH公钥
    cd/进入主目录查看.ssh文件,是否存在公私钥,参考:链接https://www.jianshu.com/p/1bdae85fcf7bhttp://events.jianshu.io/p/54f8c11aa7d9......
  • 国密SM2加解密Demo
    国密SM2加解密Demo1、pom.xml<!--国密START--><!--<dependency>--><!--<groupId>org.bouncycastle</groupId>--><!--<artifactId......
  • hbuilderx打正式包所需的私钥证书的创建方法
    现在使用uniapp作为底层框架来开发app应用已经成为了很多公司的事实标准,而uniapp的开发工具hbuilderx云打包的时候,需要私钥证书和证书profile文件。而且还需要将打包好的i......
  • 基于matlab的AES加解密算法仿真
    1.算法描述AES算法在对明文加密的时候,并不是把整个明文一股脑的加密成一整段密文,而是把明文拆分成一个个独立的明文块,每一个明文块长度128bit。这些明文块经过AES加密器复......
  • 基于matlab的AES加解密算法仿真
    1.算法描述        AES算法在对明文加密的时候,并不是把整个明文一股脑的加密成一整段密文,而是把明文拆分成一个个独立的明文块,每一个明文块长度128bit。这些明文......
  • (原创)【B4A】一步一步入门04:编译模式、打包为APK、私钥签名
    一、前言上篇(原创)【B4A】一步一步入门03:APP名称、图标等信息修改中我们将APP做成了标准的样子。本篇文章会讲解如何将程序打包成APK文件以分发,同时讲解如何制作私钥并......
  • Python黑客编程之数据加解密
    描述利用非对称密钥RSA和对称密钥AES算法对传输数据进行加密分析发送方本地保存有RSA公钥,发送数据前,利用AES算法对传输数据明文进行加密,利用RSA算法对AES的密钥进行......
  • 探索JS混淆加解密技术
    JavaScript混淆是保护您的代码免受未经授权的访问的有效方法。然而,当您需要修改或扩展混淆代码时,混淆可以使代码难以理解和修改。解决这个问题的方法是使用JS混淆解密技术。......