`

公钥与私钥

 
阅读更多

公钥与私钥

数字签名是什么?

作者:David Youd

翻译:阮一峰

原文网址:

http://www.youdzone.com/signature.html

http://www.blogjava.net/yxhxj2006/archive/2012/10/15/389547.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.

分享到:
评论

相关推荐

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

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

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

    操作步骤与上述相反,使用私钥进行加密,公钥进行解密。 5. **注意事项**: - 加解密的数据长度受限于RSA密钥的大小,通常为密钥长度减去11位。因此,如果需要加密大量数据,通常会采用一种称为“密钥交换”的方式...

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

    选取一个与φ(n)互质的整数e作为公钥的加密指数,再找到满足条件e*d mod φ(n) = 1的d作为私钥的解密指数。这样,e和d就构成了公钥和私钥对。 2. **公钥和私钥的生成**: 在本示例中,工具类提供了生成公钥和私钥...

    公钥和私钥的输入程序

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

    公钥和私钥

    #### 公钥与私钥的基本原理 公钥和私钥的概念源于非对称加密算法,这是一种利用一对密钥进行加密和解密的机制。与传统的对称加密不同,非对称加密使用了两个不同的密钥——公钥和私钥。公钥如其名,是公开的,可以...

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

    Java 中使用公钥加密私钥解密原理实现 License 控制 Java 中使用公钥加密私钥解密原理实现 License 控制是指在 Java 应用程序中使用公钥加密、私钥解密机制来实现 License 文件的控制。这种机制可以用来限制系统的...

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

    在支付宝的场景下,公钥和私钥主要用于商户与支付宝服务器之间的数据加密和验证。当用户在商户网站上完成支付操作后,商户需要通过API向支付宝发送请求,此时就需要使用私钥对请求内容进行签名,以证明请求来源的...

    Java公钥加密私钥解密.rar

    这个测试类可能会创建一些测试数据,使用公钥进行加密,然后使用私钥尝试解密,确保解密后的数据与原始数据一致,以此来证明加密解密过程的正确性。 `Base64Utils.java`则可能是用来处理Base64编码的工具类。在加密...

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

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

    公钥加密私钥解密&私钥加密公钥解密

    ### 公钥加密私钥解密与私钥加密公钥解密 在现代信息安全领域,公钥加密私钥解密及私钥加密后由公钥解密或验证的技术被广泛应用于数据保护、身份验证和安全通信等多个方面。下面将详细阐述这两种技术的基本原理及其...

    java公钥加密私钥解密数字证书

    java公钥加密私钥解密与数字证书,数字证书的生成看这里 http://hi.baidu.com/chenminliang/blog/item/2b30db24920ae0338744f9db.html

    Java实现RSA生成公钥私钥

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

    获取RSA公钥+私钥

    在Java中,我们可以使用Java Cryptography Extension (JCE) 库来生成和操作RSA密钥对,包括公钥和私钥。 生成RSA公钥和私钥的基本步骤如下: 1. **创建KeyPairGenerator对象**:首先,我们需要创建一个...

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

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

    RSA.zip_C++ rsa私钥加密_rsa加密解密_公钥私钥_私钥加密

    在给定的"RSA.zip"压缩包中,可能包含了C++代码示例,用于演示如何使用RSA算法进行加密和解密操作,以及如何生成和管理公钥私钥对。文件名"RSA"可能是源代码文件或执行程序。通过学习和理解这些代码,开发者可以更好...

    通过RSA证书提取XML/PEM公钥私钥

    在本场景中,我们关注的是如何从RSA.PFX证书中提取XML或PEM格式的公钥和私钥。 PFX(Personal Information Exchange)文件是微软定义的一种证书存储格式,它包含了用户的数字证书和相应的私钥,通常用于跨平台的...

    使用公钥加密私钥解密原理

    这种加密方式与传统的对称加密不同,它涉及到两把密钥:一把是公开的公钥,另一把是保密的私钥。在公钥加密和私钥解密的机制下,数据的加密和解密使用的是不同的密钥,从而提供了更高的安全性和隐私保护。 公钥加密...

    c#公钥加密私钥解密和验证

    在IT领域,尤其是在网络安全和数据保护方面,公钥加密和私钥解密是核心概念,主要应用于SSL/TLS协议、SSH、PGP等。在C#编程中,我们可以使用.NET框架提供的System.Security.Cryptography命名空间来实现这些功能。...

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

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

    支持rsa公钥加密私钥解密;支持rsa公钥解密私钥加密

    标题中提到的“支持rsa公钥加密私钥解密”是指使用RSA算法时的一种常见操作:用公钥加密数据,然后用私钥解密。这种模式通常发生在数据从发送方传输到接收方的过程中,确保即使数据在传输过程中被截获,攻击者也无法...

Global site tag (gtag.js) - Google Analytics