http://www.cnblogs.com/luluQQ/p/4303283.html

  前些天逛技术网,偶尔看到一篇国外关于密钥的通俗易懂的详解文章,当时对具体的细节还是有点模糊搞不清楚,so昨天恶补了一下,今天简单整理一下自己的收获,以备以后回顾。

1.鲍勃有两把钥匙,一把是公钥,另一把是私钥。

2.鲍勃把公钥送给他的朋友们—-帕蒂、道格、苏珊—-每人一把。

3.苏珊给鲍勃写信,写完后用鲍勃的公钥加密,达到保密的效果。

4.鲍勃收信后,用私钥解密,看到信件内容。

5.鲍勃给苏珊回信,写完后用Hash函数,生成信件的摘要(digest)。

6.然后,鲍勃使用私钥,对这个摘要加密,生成”数字签名”(signature)。

7.鲍勃将这个签名,附在信件下面,一起发给苏珊。

8.苏珊收信后,取下数字签名,用鲍勃的公钥解密,得到信件的摘要。由此证明,这封信确实是鲍勃发出的。

9.苏珊再对信件本身使用Hash函数,将得到的结果,与上一步得到的摘要进行对比。如果两者一致,就证明这封信未被修改过。

10.复杂的情况出现了。道格想欺骗苏珊,他偷偷使用了苏珊的电脑,用自己的公钥换走了鲍勃的公钥。因此,他就可以冒充鲍勃,写信给苏珊。

11.苏珊发现,自己无法确定公钥是否真的属于鲍勃。她想到了一个办法,要求鲍勃去找”证书中心”(certificate authority,简称CA),为公钥做认证。证书中心用自己的私钥,对鲍勃的公钥和一些相关信息一起加密,生成”数字证书”(Digital Certificate)。

12.鲍勃拿到数字证书以后,就可以放心了。以后再给苏珊写信,只要在签名的同时,再附上数字证书就行了。

13.苏珊收信后,用CA的公钥解开数字证书,就可以拿到鲍勃真实的公钥了,然后就能证明”数字签名”是否真的是鲍勃签的。

14.下面,我们看一个应用”数字证书”的实例:https协议。这个协议主要用于网页加密。

15.首先,客户端向服务器发出加密请求。

16.服务器用自己的私钥加密网页以后,连同本身的数字证书,一起发送给客户端。

17.客户端(浏览器)的”证书管理器”,有”受信任的根证书颁发机构”列表。客户端会根据这张列表,查看解开数字证书的公钥是否在列表之内。

18.如果数字证书记载的网址,与你正在浏览的网址不一致,就说明这张证书可能被冒用,浏览器会发出警告。

19.如果这张数字证书不是由受信任的机构颁发的,浏览器会发出另一种警告。

20.如果数字证书是可靠的,客户端就可以使用证书中的服务器公钥,对信息进行加密,然后与服务器交换加密信息。

想更好地理解上面这篇形象生动的技术文章,你还需要理解一些概念和术语

1.1、公钥密码体制(public-key cryptography)

公钥密码体制分为三个部分,公钥、私钥、加密解密算法,它的加密解密过程如下:

  • 加密:通过加密算法和公钥对内容(或者说明文)进行加密,得到密文。加密过程需要用到公钥。
  • 解密:通过解密算法和私钥对密文进行解密,得到明文。解密过程需要用到解密算法和私钥。注意,由公钥加密的内容,只能由私钥进行解密,也就是说,由公钥加密的内容,如果不知道私钥,是无法解密的。

公钥密码体制的公钥和算法都是公开的(这是为什么叫公钥密码体制的原因),私钥是保密的。大家都以使用公钥进行加密,但是只有私钥的持有者才能解密。在实际的使用中,有需要的人会生成一对公钥和私钥,把公钥发布出去给别人使用,自己保留私钥。

1.2、对称加密算法(symmetric key algorithms)

在对称加密算法中,加密使用的密钥和解密使用的密钥是相同的。也就是说,加密和解密都是使用的同一个密钥。因此对称加密算法要保证安全性的话,密钥要做好保密,只能让使用的人知道,不能对外公开。这个和上面的公钥密码体制有所不同,公钥密码体制中加密是用公钥,解密使用私钥,而对称加密算法中,加密和解密都是使用同一个密钥,不区分公钥和私钥。

// 密钥,一般就是一个字符串或数字,在加密或者解密时传递给加密/解密算法。前面在公钥密码体制中说到的公钥、私钥就是密钥,公钥是加密使用的密钥,私钥是解密使用的密钥

很多时候如果要完全程的安全通信,需要对称加密和非对称加密一起使用。

目前很流行加密算法 即 RSA算法,它是基于一个十分简单的数论事实:将两个大素数相乘十分容易,但是想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥。

参考http://blog.jobbole.com/1225/

http://blog.jobbole.com/74614/

对证书和公钥的基本理解相关推荐

  1. 数字证书原理,公钥私钥加密原理

    文中首先解释了加密解密的一些基础知识和概念,然后通过一个加密通信过程的例子说明了加密算法的作用,以及数字证书的出现所起的作用.接着对数字证书做一个详细的解释,并讨论一下windows中数字证书的管理, ...

  2. 什么是数字证书、公钥私钥

    文中首先解释了加密解密的一些基础知识和概念,然后通过一个加密通信过程的例子说明了加密算法的作用,以及数字证书的出现所起的作用.接着对数字证书做一个详细的解释,并讨论一下windows中数字证书的管理, ...

  3. java生成公钥和私钥_使用Java生成证书,公钥和私钥

    小编典典 您可以使用一对或密钥在Java中动态生成证书.(公钥,私钥).以BigInteger格式获取这些密钥,并检查以下代码以生成证书. RSAPrivateKeySpec serPrivateSp ...

  4. c#获取ssl证书有效性_c# – 获取网站SSL证书的公钥

    我不确定以下是否可行,因为我不是这方面的专家(安全,证书--等). 无论如何,我想要做的是使用C#代码获取网站SSL证书的公钥.就像有没有办法使用HTTP请求或其他东西从网站查询该信息? 为了让你们明 ...

  5. pfx 证书导出公钥和私钥

    pfx 证书导出公钥和私钥 在做银联支付的时候,因为是多商户的,所以采用单独的私钥加密,需要提取 pfx 中的私钥 准备 准备 pfx 格式的证书 [root@blue acp_crt]# tree ...

  6. 生成CA根证书、公钥、私钥指令(数字证书)

    一.生成CA根证书 生成 CA 私钥:openssl genrsa -out ca.key 1024 因为是自签名,省略生成 证书签名请求csr 的过程,直接执行以下命令生成CA证书:openssl ...

  7. 【一】生成CA根证书、公钥、私钥指令(数字证书)

    一.生成CA根证书 生成 CA 私钥:openssl genrsa -out ca.key 1024 因为是自签名,省略生成 证书签名请求csr 的过程,直接执行以下命令生成CA证书:openssl ...

  8. 【可食用】KeyTool生成KeyStore,证书、公钥、私钥文档JAVA生成,JAVA实现ECC签名验签

    KeyTool生成KeyStore,证书.公钥.私钥文档JAVA生成,JAVA实现ECC签名验签 一.首先我们可以写个工具类生成密钥对.证书.公钥.私钥文本 jksAndCerGenerator.ja ...

  9. ssl中的证书/私钥/公钥

    文章目录 公钥/私钥/证书 pfx pkcs12 pkcs8 pem ASN.1 公钥/私钥/证书 证书certificate中包括含了数字签名和公钥, 客户端可以通过CA来验证数字签名. 公钥/私钥 ...

最新文章

  1. SpringBoot框架:入门篇
  2. python的类的super()
  3. sql 给数据库表 字段 添加注释
  4. [No0000BC]ADO.NET中的几个主要对象
  5. oracle 自定义函数 返回一个表类型
  6. leetcode刷题:1.无重复字符的最长字串
  7. asp.net core mvc 管道之中间件
  8. 计算机基础类报刊,全国“xx杯”计算机应用基础类说课大赛优秀作品:图文表混排-制作感恩报刊说课课件...
  9. java中常见对象——StringBuffer
  10. android ion --system heap(个人理解,不确定完全对)
  11. Python实现人机中国象棋游戏
  12. cocos2d js 别出白线游戏上线
  13. 滑动窗口(java)
  14. 房产销售数据分析与可视化的设计与实现
  15. 给小朋友讲故事——第一次世界大战(音频)
  16. Ubuntu解决文件带锁问题
  17. C#——lambda表达式和反射
  18. 教程--免费为小程序接入客服机器人
  19. 网站社交登录之微博登录
  20. 周期训练理论与方法pdf_周期_PDF图书下载_(美) 图德·邦帕 (Tudor O.Bompa) (美)_免费PDF电子书下载_第一图书网...

热门文章

  1. Android Paint 进阶之滤镜效果(ColorFilter)
  2. 获取上市公司数据的几个渠道,最好的也许是东方财富
  3. 华文C8650刷回原厂系统
  4. Javascript 取消超级链接效果
  5. 《巫妖王的远征》(bfs板子题)
  6. vuetifyjs文本域输入实时保存
  7. 番茄花园Ghost Win10系统X64位10041装机版2015年4月
  8. myFAX传真服务器主要特色:
  9. 是android机顶盒怎么用,网络电视机顶盒原来可以这么用,让你安卓系统流畅运行!...
  10. 英语激励短语、成功寄语