`

公钥和私钥

 
阅读更多

原文网址:http://www.youdzone.com/signature.html

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.

 

分享到:
评论

相关推荐

    公钥和私钥的输入程序

    在IT领域,尤其是在网络安全和加密技术中,公钥和私钥是至关重要的概念。公钥和私钥是一种非对称加密技术的基础,广泛应用于数据传输、数字签名和身份验证等场景。RSA是一种著名的公钥加密算法,由Ron Rivest、Adi ...

    Java 公钥和私钥加密解密代码

    在Java编程语言中,公钥和私钥加密解密是一种重要的安全技术,广泛应用于网络通信、数据传输等领域。本文将详细解析如何使用Java实现公钥和私钥的加解密操作,以及相关的关键概念和代码示例。 首先,我们要了解公钥...

    Android中使用命令查看keystore的公钥和私钥

    Android中使用命令查看keystore的公钥和私钥,准备好keystore文件后按文档中操作即可获得keystore的公钥和私钥。

    RSA生成公钥私钥和使用公钥私钥加密解密demo

    本示例提供了一个RSA加密工具类,用于生成公钥和私钥,并使用它们进行加密和解密操作,这对于保护数据库中的敏感信息,如密码,是非常必要的。 1. **RSA算法原理**: RSA算法基于数论中的大数因子分解难题。其基本...

    支付宝公钥、私钥的设置.docx

    在进行支付宝集成开发时,公钥和私钥的设置是至关重要的步骤,它们构成了安全通信的基础。本文将详细讲解如何在支付宝后台设置公钥和私钥,以及它们在支付过程中的作用。 首先,公钥和私钥是基于非对称加密技术的...

    Windows版 生成RSA公钥和私钥的工具

    本文将详细讲解如何在Windows操作系统上利用OpenSSL工具生成RSA公钥和私钥。 首先,OpenSSL是一个强大的安全套接字层密码库,包含各种主要的密码算法、常用的密钥和证书封装管理功能以及SSL协议,并提供丰富的应用...

    Java实现RSA生成公钥私钥

    在Java中实现RSA公钥和私钥的生成,通常我们会使用Java Cryptography Extension (JCE) 提供的API,如`java.security.KeyPairGenerator`类。但是,根据你的描述,这里提供的代码是不直接依赖API,而是通过数学计算来...

    C# .net版 RSA 公钥加密私钥解密 私钥加密公钥解密

    本教程主要讲解如何在C# .NET环境中使用RSA进行公钥加密和私钥解密,以及私钥加密和公钥解密的操作。 首先,让我们了解RSA的基本原理。RSA算法基于两个大素数的乘积,这个乘积作为公钥,而这两个大素数作为私钥。...

    支付宝获取公钥和私钥工具

    在IT行业中,尤其是在支付系统和安全通信领域,公钥和私钥是至关重要的概念。公钥和私钥机制是基于非对称加密算法,广泛应用于数据加密、数字签名以及身份验证等方面。支付宝作为国内领先的支付平台,也采用了这种...

    VC++写的公钥和私钥加密算法

    在IT领域,尤其是在网络安全和数据保护方面,公钥和私钥加密算法扮演着至关重要的角色。这个名为"VC++写的公钥和私钥加密算法"的项目,显然是一个使用Microsoft Visual C++编写的示例,旨在帮助初学者理解这种加密...

    Linux免密登入 使用公钥+私钥:MobaXterm设置无密码登录

    密钥对是由一对公钥和私钥组成的,它们在数字加密领域扮演着重要的角色。当首次尝试进行无密码登录时,需要生成这对密钥。一旦生成,这些密钥可以被反复使用,无需每次都重新生成。 - **私钥**:类似于门的钥匙,...

    java中使用公钥加密私钥解密原理实现license控制

    在 KeyGenerater 类中,我们使用 Java 的 KeyPairGenerator 类来生成公钥和私钥对,然后使用 Base64 对公钥和私钥进行编码。我们可以使用 SecureRandom 类来初始化随机数生成器,并使用 setSeed 方法来设置随机数...

    ssh配置公钥和私钥登陆SecureCRT[整理].pdf

    SSH 配置公钥和私钥登录 SecureCRT SSH(Secure Shell)是一种网络协议,用于安全地访问和管理远程服务器。 SecureCRT 是一种流行的 SSH 客户端软件,支持多种身份验证方式,包括密码认证和公钥认证。在本文中,...

    C++实现RSA公钥私钥加密算法

    RSA算法是一种非对称加密算法,它在信息...综上所述,C++实现RSA公钥私钥加密算法涉及了大数运算、素数检测、欧拉函数、模逆运算等多个数学和密码学概念。理解并实现这一算法有助于深入理解信息安全基础和加密技术。

    Java公钥加密私钥解密.rar

    在IT领域,尤其是在网络安全和数据传输中,公钥加密和私钥解密是一种常见的安全机制。这个名为"Java公钥加密私钥解密.rar"的压缩包文件包含了一个使用Java实现的公钥/私钥加密解密的示例。在这个案例中,开发者可能...

    内容包含SM2 pem格式的公钥、私钥和对应十六进制的公钥和私钥,可以用于验证PEM转十六进制之间转换工具

    内容包含SM2 pem格式的公钥、私钥和对应十六进制的公钥和私钥,可以用于验证PEM转十六进制之间转换工具

    公钥和私钥attachment

    NULL 博文链接:https://mlaaalm.iteye.com/blog/701070

    openssl SM2 密钥解析出公钥和私钥

    openssl 中把pem格式的SM2密钥,解析成EC_KEY格式的key,然后解析出key中公钥和私钥

    密钥生成工具 puttygen,windows系统下用于生成公钥和私钥。

    Puttygen,全称为PuTTY Key Generator,是Windows操作系统下广泛使用的工具,专门用于生成SSH(Secure Shell)的公钥和私钥对。这个工具是PuTTY套件的一部分,PuTTY是一个流行的免费终端模拟器和网络文件传输应用...

Global site tag (gtag.js) - Google Analytics