https私钥和公钥(转)

公钥与私钥,HTTPS详解

原文网址:http://www.youdzone.com/signature.html
1.公钥与私钥原理
1)鲍勃有两把钥匙,一把是公钥,另一把是私钥

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

3)苏珊要给鲍勃写一封保密的信。她写完后用鲍勃的公钥加密,就可以达到保密的效果。

4)鲍勃收信后,用私钥解密,就看到了信件内容。这里要强调的是,只要鲍勃的私钥不泄露,这封信就是安全的,即使落在别人手里,也无法解密。

5)鲍勃给苏珊回信,决定采用"数字签名"。他写完后先用Hash函数,生成信件的摘要(digest)。

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

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

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

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

10)复杂的情况出现了。道格想欺骗苏珊,他偷偷使用了苏珊的电脑,用自己的公钥换走了鲍勃的公钥。此时,苏珊实际拥有的是道格的公钥,但是还以为这是鲍勃的公钥。因此,道格就可以冒充鲍勃,用自己的私钥做成"数字签名",写信给苏珊,让苏珊用假的鲍勃公钥进行解密。相当于本该是鲍勃和苏珊之间通信,变成了道格于苏珊之间的通信

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

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

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

2.HTTPS详解
HTTP协议的网站容易被篡改和劫持,如一些不良的运营商会通过代理服务器在你的页面中植入广告等。
因此很多网站选择使用HTTPS协议。HTTPS协议通过TLS层和证书机制提供了内容加密,身份认证,数据完整性三大功能。

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

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

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

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

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

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

时间: 2024-08-29 07:34:49

https私钥和公钥(转)的相关文章

支付宝集成获取私钥与公钥【原创】

项目需要,需要在客户端集成支付宝接口.就研究了一下:因为使用支付宝接口,就需要到支付宝官网:注册帐号,并申请.下面讲的是申请好之后的操作. 登录成功之后,   店家我的商家服务—在页面的下方找到——>签约管理—>找打 移动支付—–>点击下载集成文档—>跳到新的页面,在页面下方—>找到下载开发包,下载移动支付即可.然后解压出来之后一般会得到三个 文件夹. 这个时候要打开文件名为:  支付宝钱包支付接口开发包2.0标准版的文件.打开之后有一个Demo 文件.打开Demo文件.里面

支付宝获取私钥和公钥

支付宝官网:店家我的商家服务-在页面的下方找到-->签约管理->找打 移动支付-–>点击下载集成文档->跳到新的页面,在页面下方->找到下载开发包,下载移动支付即可.然后解压出来之后一般会得到三个文件夹. 这个时候要打开文件名为:  支付宝钱包支付接口开发包2.0标准版的文件.打开之后有一个Demo 文件.里面会有三个文件 夹:第一个 openssl; 第二个 服务端 Demo,第三个 客户端demo. 这个时候,我们需要关心的是  openssl 文件与 客户端 Demo 

使用ssh-keygen生成私钥和公钥

1.使用ssh-keygen生成私钥和公钥 命令如下: ssh-keygen -t rsa 例子: fdipzone@ubuntu:~$ ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/home/fdipzone/.ssh/id_rsa): 这里输入要生成的文件名 Enter passphrase (empty for no passphrase): 这

密钥,私钥,公钥的区分

首先明确几个基本概念: 1.密钥对,在非对称加密技术中,有两种密钥,分为私钥和公钥,私钥是密钥对所有者持有,不可公布,公钥是密钥对持有者公布给他人的. 2.公钥,公钥用来给数据加密,用公钥加密的数据只能使用私钥解密. 3.私钥,如上,用来解密公钥加密的数据. 4.摘要,对需要传输的文本,做一个HASH计算,一般采用SHA1,SHA2来获得. 5.签名,使用私钥对需要传输的文本的摘要进行加密,得到的密文即被称为该次传输过程的签名.(看最下面的一部分就明白了) 6.签名验证,数据接收端,拿到传输文本

RSA公钥加密—私钥解密&私钥加密—公钥解密&私钥签名—公钥验证签名

关于RSA算法,前面有介绍,点击打开链接. 这里直接有实现. 代码太多就不直接贴了,免积分下载. http://download.csdn.net/detail/acmjk/7310847 RSA公钥加密-私钥解密&私钥加密-公钥解密&私钥签名-公钥验证签名,布布扣,bubuko.com

RSA不对称加密,公钥加密私钥解密,私钥加密公钥解密

RSA算法是第一个能同时用于加密和数字签名的算法,也易于理解和操作. RSA是被研究得最广泛的公钥算法,从提出到现在已近二十年,经历了各种攻击的考验,逐渐为人们接受,普遍认为是目前最优秀的公钥方案之一.RSA的安全性依赖于大数的因子分解,但并没有从理论上证明破译RSA的难度与大数分解难度等价. .NET提供常用的加密算法类,支持RSA的类是RSACryptoServiceProvider(命名空间:System.Security.Cryptography),但只支持公钥加密,私钥解密.RSACr

基于私钥加密公钥解密的RSA算法C#实现

RSA算法是第一个能同时用于加密和数字签名的算法,也易于理解和操作. RSA是被研究得最广泛的公钥算法,从提出到现在已近二十年,经历了各种攻击的考验,逐渐为人们接受,普遍认为是目前最优秀的公钥方案之一.RSA的安全性依赖于大数的因子分解,但并没有从理论上证明破译RSA的难度与大数分解难度等价.    RSA的安全性依赖于大数分解.公钥和私钥都是两个大素数( 大于 100个十进制位)的函数.据猜测,从一个密钥和密文推断出明文的难度等同于分解两个大素数的积.     密钥对的产生.选择两个大素数,p

Mac下如何生成RSA加密的私钥和公钥

关于RSA加密算法的介绍这里就不复制粘贴了,下面讲的是如何在Mac下利用命令行生成RSA的私钥和公钥. 使用command生成2048位的私有密钥 openssl genrsa -out private_key.pem 2048 当前的目录下会生成一个名为 private_key.pem 的文件,如果用文本编辑器打开,你会发现是这样的: 这些东西就是我们刚刚生成的密钥,这个东西只能放在服务端,如果这个东西泄漏,整个RSA加密环节就暴露了. 接下来我们利用私钥生成公钥(command命令必须在刚才

在文件中读取私钥和公钥

在做项目中,碰到是给到定的私钥和公钥,我们得把公钥和私钥读出来才可以使用,私钥一般还会有密码! /** * 获取公钥 */ public PublicKey readPublicKey(String cerFileName) { CertificateFactory cf; FileInputStream in; Certificate c; PublicKey pk = null; try { cf = CertificateFactory.getInstance("X.509");