2019独角兽企业重金招聘Python工程师标准>>>

对公钥和私钥有点稀里糊涂的,搜索了一些资料,作一些整理吧,先看这个:

加密--公钥
解密--私钥
签名--私钥
验证--公钥

看了这个也许会对私钥用于签名不解,其实它等同于用私钥加密,而公钥验证就是用公钥解密,但是不能用于保密信息。因为公钥是公开的。

再来一个:

1)公钥和私钥成对出现
2)公开的密钥叫公钥,只有自己知道的叫私钥
3)用公钥加密的数据只有对应的私钥可以 解密
4)用私钥加密的数据只有对应的公钥可以解密
5)如果可以用公钥解密,则必然是对应的私钥加的密
6)如果可以用私钥解密,则 必然是对应的公钥加的密

公钥和私钥都可以用来加密或解密---只要能保证用A加密,就用B解密就行。至于A是公钥还是私钥,其实可以根据不同的用途而定。

一、公钥加密,私钥解密——用于保密信息

如果你想把某个消息秘密的发给某人,那你就可以用他的公钥加密。因为只有他知道他的私钥,所以这消息也就只有他本人能解开,于是你就达到了你的目的。

二、私钥加密,公钥解密——用于数字签名

严格来说,这里说的私钥加密是用私钥对摘要进行加密,接收方可以用公钥解密,解密成功则可验证信息的发送者是私钥的拥有人。因为公钥是公开的,所以起不了保密信息的作用。

如果你想发布一个公告,需要一个手段来证明这确实是你本人发的,而不是其他人冒名顶替的。那你可以在你的公告开头或者结尾附上一段用你的私钥加密的内容(例如说就是你公告正文的一段话),那所有其他人都可以用你的公钥来解密,看看解出来的内容是不是相符的。如果是的话,那就说明这公告确实是你发的---因为只有你的公钥才能解开你的私钥加密的内容,而其他人是拿不到你的私钥的。

但这仅仅做到了数字签名的第一部分:证明这消息是你发的。数字签名还有第二部分:证明这消息内容确实是完整的---也就是没有经过任何形式的篡改(包括替换、缺少、新增)。

要做到数字签名的第二部分,需要做的是:把你公告的原文做一次哈希(md5或者sha1都行),然后用你的私钥加密这段哈希作为签名,并一起公布出去。当别人收到你的公告时,他可以用你的公钥解密你的签名,如果解密成功,并且解密出来的哈希值确实和你的公告原文一致,那么他就证明了两点:这消息确实是你发的,而且内容是完整的。

三、对公钥进行认证——数字证书

黑客可以替换你的公钥,然后用他的私钥做数字签名给你发信息,而你用黑客伪造的公钥能成功验证,会让你误认为消息来源没变。

这种情况下需要CA(证书中心certificate authority)对公钥进行认证。证书中心用自己的私钥,对信息发送者的公钥和一些相关信息一起加密,生成"数字证书"(Digital Certificate)。

这个可以参考这篇文章:数字签名是什么? ,讲得非常好,图示很清楚。

通过在实际的使用中,公钥也不会单独出现,总是以数字证书的方式出现,以确保公钥的安全性和有效性。

四、对称与非对称算法

对称算法是说,加密过程和解密过程是对称的,用一个 密钥加密,可以用同一个密钥解密。使用公私钥的算法是非对称加密算法。

HTTPS一般使用了以下算法,其中就包括非对称和对称加密算法:
非对称加密算法:RSA,DSA/DSS
对称加密算法:AES,RC4,3DES
HASH算法:MD5,SHA1,SHA256
其中非对称加密算法用于在握手过程中加密生成的密码,对称加密算法用于对真正传输的数据进行加密,而HASH算法用于验证数据的完整性。

五、HTTPS的工作原理
HTTPS在传输数据之前需要客户端(浏览器)与服务端(网站)之间进行一次握手,在握手过程中将确立双方加密传输数据的密码信息。TLS/SSL协议不仅仅是一套加密传输的协议,更是一件经过艺术家精心设计的艺术品,TLS/SSL中使用了非对称加密,对称加密以及HASH算法。握手过程的简单描述如下:
1.浏览器将自己支持的一套加密规则发送给网站。
2.网站从中选出一组加密算法与HASH算法,并将自己的身份信息以证书的形式发回给浏览器。证书里面包含了网站地址,加密公钥,以及证书的颁发机构等信息。
3.获得网站证书之后浏览器要做以下工作:
a) 验证证书的合法性(颁发证书的机构是否合法,证书中包含的网站地址是否与正在访问的地址一致等),如果证书受信任,则浏览器栏里面会显示一个小锁头,否则会给出证书不受信的提示。
b) 如果证书受信任,或者是用户接受了不受信的证书,浏览器会生成一串随机数的密码,并用证书中提供的公钥加密。
c) 使用约定好的HASH计算握手消息,并使用生成的随机数对消息进行加密,最后将之前生成的所有信息发送给网站。
4.网站接收浏览器发来的数据之后要做以下的操作:
a) 使用自己的私钥将信息解密取出密码,使用密码解密浏览器发来的握手消息,并验证HASH是否与浏览器发来的一致。
b) 使用密码加密一段握手消息,发送给浏览器。
5.浏览器解密并计算握手消息的HASH,如果与服务端发来的HASH一致,此时握手过程结束,之后所有的通信数据将由之前浏览器生成的随机密码并利用对称加密算法进行加密。

参考:

公钥,私钥,SSL(讲的很生动)

RSA的公钥和私钥到底哪个才是用来加密和哪个用来解密?

利用openssl进行RSA加密解密

Android客户端与PHP服务端RES公钥私钥互加解密
HTTPS那些事(一)HTTPS原理

转载于:https://my.oschina.net/ioslighter/blog/359207

公钥、私钥、数字签名、数字证书、对称与非对称算法、HTTPS相关推荐

  1. 公钥 私钥 数字签名 CA证书

    加密 简单来说分为两种,对称加密和非对称加密. 对称加密 加密和解密用的是同一个秘钥,在对称加密算法中常用的算法有:DES.3DES.TDEA.Blowfish.RC2.RC4.RC5.IDEA等.这 ...

  2. 网络安全--数字签名/数字证书

    对称加密: 未加密的信息+秘钥 --> 加密的黑盒子 --> 加密后的信息 加密后的信息+秘钥 --> 解密的黑盒子 --> 未加密的信息 非对称加密: 未加密的信息+公钥 - ...

  3. 什么是 数字签名 数字证书 数字信封

    1,数字签名 数字证书 数字信封 当A和B进行通信时,将A发送的消息的hash值先用A的私钥进行加密(数字签名),B存储A的公钥,B收到信息之后利用公钥进行解密,保证信息的完整性和保密性来自于A 存在 ...

  4. 详解公钥、私钥、数字证书的概念

    加密和认证 首先我们需要区分加密和认证这两个基本概念. 加密是将数据资料加密,使得非法用户即使取得加密过的资料,也无法获取正确的资料内容,所以数据加密可以保护数据,防止监听攻击.其重点在于数据的安全性 ...

  5. 公钥、私钥、数字证书的概念 (讲得很明吧,通俗易懂)

    公钥和私钥 一直以来对公钥和私钥都理解得不是很透彻,感觉到模棱两可.今天在网上找了半天,通过查看对这个密钥对的理解,总算弄清楚了.       公钥和私钥就是俗称的不对称加密方式,是从以前的对称加密( ...

  6. 公钥、私钥、数字证书的概念

    公钥和私钥 一直以来对公钥和私钥都理解得不是很透彻,感觉到模棱两可.今天在网上找了半天,通过查看对这个密钥对的理解,总算弄清楚了.       公钥和私钥就是俗称的不对称加密方式,是从以前的对称加密( ...

  7. 公私钥,数字证书,https

    1.密钥对,在非对称加密技术中,有两种密钥,分为私钥和公钥,私钥是密钥对所有者持有,不可公布,公钥是密钥对持有者公布给他人的. 2.公钥,公钥用来给数据加密,用公钥加密的数据只能使用私钥解密. 3.私 ...

  8. 名词解释——对称加密、非对称加密、摘要、数字签名、数字证书

    文章目录 对称加密.非对称加密.摘要.数字签名.数字证书 对称加密 非对称加密 摘要 数字签名 数字证书 对称加密.非对称加密.摘要.数字签名.数字证书 对称加密 对称加密是指用来加密和解密的是同一个 ...

  9. 关于数字证书,数字签名,CA证书,Https都在这里了

    Http协议大家都不陌生了,但是http的请求内容都是明文的内容,如果被拦截了请求,就能看到你的请求内容,比如账号密码之类的,这样的话就是不安全的, 然后就有了http+SSL/TLS =https ...

最新文章

  1. java 1.7 事件监听_17.7Listener监听器
  2. java 对象 jvm生命_JVM对象的生命周期
  3. 树莓派做无线打印服务器,亲测可用 树莓派打造无线共享打印机
  4. C++为什么要学指针?
  5. linux传输文件无密码,Linux下scp无密码上传 下载 文件 目录
  6. restful是什么php,什么是RESTful?
  7. 从零开始的C++网络编程
  8. nginx正确服务react-router应用
  9. EF Code First 简单的示例
  10. Color.js增强你对颜色的控制
  11. 探索私有云OpenStack管理选项
  12. android 电池续航时间,《Android优化专题》——优化电池续航能力
  13. 614 Second Degree Follower
  14. 计算机网络(第七版)谢希仁编著 前五章课后答案计算题详解
  15. windows下安装python-pcl及其问题解决办法
  16. Hexo的入门教程及Next主题配置
  17. matlab 合成t检验,[zz]用MATLAB做T检验(ttest)
  18. 计划制定与管理-日事清
  19. Internet Explorer无法打开internet站点,已终止操作的解决方法合集
  20. Tacotron2 NVIDIA版本使用Biao-Bei数据集

热门文章

  1. 基于keepalived实现多种模式的高可用集群网站架构
  2. 微信公众号开发之授权获取用户信息
  3. C++学习笔记——虚函数
  4. 信息安全的技术研究相关站点
  5. Android中样式及主题
  6. PL/SQL编程的简单学习
  7. 30岁之前创业成功的12个要点
  8. ORACLE 中ROWNUM用法总结!
  9. 如何设置tomcat的默认应用。
  10. netty时间轮HashedWheelTimer文档翻译及简单说明