公钥私钥加密解密数字证书数字签名详解

from http://codefine.co/1455.html

首先明确几个基本概念:

1、密钥对,在非对称加密技术中,有两种密钥,分为私钥和公钥,私钥是密钥对所有者持有,不可公布,公钥是密钥对持有者公布给他人的。

2、公钥,公钥用来给数据加密,用公钥加密的数据只能使用私钥解密。

3、私钥,如上,用来解密公钥加密的数据。

4、摘要,对需要传输的文本,做一个HASH计算,一般采用SHA1,SHA2来获得。

5、签名,使用私钥对需要传输的文本的摘要进行加密,得到的密文即被称为该次传输过程的签名。

6、 签名验证,数据接收端,拿到传输文本,但是需要确认该文本是否就是发送发出的内容,中途是否曾经被篡改。因此拿自己持有的公钥对签名进行解密(密钥对中的 一种密钥加密的数据必定能使用另一种密钥解密。),得到了文本的摘要,然后使用与发送方同样的HASH算法计算摘要值,再与解密得到的摘要做对比,发现二 者完全一致,则说明文本没有被篡改过。

上面实际上介绍了加密解密和数字签名两个概念和实现过程,二者的过程正好是相反的。

在 签名的过程中,有一点很关键,收到数据的一方,需要自己保管好公钥,但是要知道每一个发送方都有一个公钥,那么接收数据的人需要保存非常多的公钥,这根本 就管理不过来。并且本地保存的公钥有可能被篡改替换,无从发现。怎么解决这一问题了?由一个统一的证书管理机构来管理所有需要发送数据方的公钥,对公钥进 行认证和加密。这个机构也就是我们常说的CA。认证加密后的公钥,即是证书,又称为CA证书,证书中包含了很多信息,最重要的是申请者的公钥。

CA 机构在给公钥加密时,用的是一个统一的密钥对,在加密公钥时,用的是其中的私钥。这样,申请者拿到证书后,在发送数据时,用自己的私钥生成签名,将签名、 证书和发送内容一起发给对方,对方拿到了证书后,需要对证书解密以获取到证书中的公钥,解密需要用到CA机构的”统一密钥对“中的公钥,这个公钥也就是我 们常说的CA根证书,通常需要我们到证书颁发机构去下载并安装到相应的收取数据的客户端,如浏览器上面。这个公钥只需要安装一次。有了这个公钥之后,就可 以解密证书,拿到发送方的公钥,然后解密发送方发过来的签名,获取摘要,重新计算摘要,作对比,以验证数据内容的完整性。

这里纯粹的文字,未免枯燥,可以结合前面提到的文章链接中的图片一起理解,这些文字对图片的理解应该有一些帮助。HTTPS是综合用了加密解密和数字签名的实例,理解了上述概念和过程,结合密钥对交换的过程就不难理解HTTPS。

时间: 2024-10-25 03:16:29

公钥私钥加密解密数字证书数字签名详解的相关文章

RAS非对称加密与数字证书数字签名

它用图片通俗易懂地解释了,"数字签名"(digital signature)和"数字证书"(digital certificate)到底是什么. 我对这些问题的理解,一直是模模糊糊的,很多细节搞不清楚.读完这篇文章后,发现思路一下子就理清了.为了加深记忆,我把文字和图片都翻译出来了. 文中涉及的密码学基本知识,可以参见我以前的笔记. ==================================================== 数字签名是什么? 作者:Da

苹果证书和公钥私钥加密

今天看了点关于公私钥加密的内容,赶快记下省的忘记了. 这里有几个概念:公钥,私钥,加密,认证,认证中心(CA),数字证书. 公钥和私钥是属于非对称性加密,公钥和私钥是完全不同的,但是相互对应的.一把私钥只能对应一把公钥.顾名思义,公钥是对外开放的,所有人都可以获得,私钥是自己保管的. 加密与认证 基于公钥的加密 加密的目的是保证密文只能由特定人读取,其他人都不能获知里面的内容.公钥的作用就是加密.举例说明:Alices发信息给Bob.她会用Bob给的公钥对明文进行加密.Bob得到密文后,用自己的

HTTPS中的对称密钥加密,公开密钥加密,数字证书

HTTPS中的对称密钥加密,公开密钥加密,数字证书 密钥 我们将未加密的内容称为明文,加密之后的内容称为密文. 简单来说,要加密一段明文,可以将这段内容输入到一个加密函数中,输出密文.但这种简单的加密方式存在被人盗取到加密函数从而破解明文的危险,且加密函数一般构成复杂,一旦被盗取更换成本较高. 于是人们想出了一个办法,在加密函数中再添加一个参数,这个参数只有通信双方知道,没有参数则无法正确解密出密码.这个参数被称为密钥.对于同一个加密函数而言,密钥值的不同则加密方式也不同,得出的密文也就不同.这

https 单向双向认证说明_数字证书, 数字签名, SSL(TLS) , SASL

转自:https 单向双向认证说明_数字证书, 数字签名, SSL(TLS) , SASL 因为项目中要用到TLS + SASL 来做安全认证层. 所以看了一些网上的资料, 这里做一个总结. 1. 首先推荐几个文章: 数字证书: http://www.cnblogs.com/hyddd/archive/2009/01/07/1371292.html 数字证书和SSL: http://www.2cto.com/Article/201203/121534.html 数字签名: http://www.

java加密与数字证书

加密与数字证书 加密与数字证书 概念 数字摘要 密钥加密技术 私用密钥(对称加密) 公共密钥(非对称加密) 数字签名 数字证书 X.509标准 工具 keytool 示例代码 加密解密 密钥库准备 代码 签名验签 代码 概念 数字摘要 数字摘要就是采用单项Hash函数将需要加密的明文"摘要"成一串固定长度(128位)的密文,这一串密文又称为数字指纹,HASH值或摘要值 ,它有固定的长度,而且不同的明文摘要成密文,其结果总是不同的,而同样的明文其摘要必定一致. 目前常用的摘要算法为MD5

java加密解密和证书的demo

import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.security.InvalidKeyException; import java.security.Key; import java.security.KeyPair; import java.security.KeyPa

iOS之那几种加密解密 公钥密钥加密解密

// // ViewController.m // 公钥密钥加密解密 // // Created by dllo on 16/1/12. // Copyright © 2016年 HaiTeng. All rights reserved. // #import "ViewController.h" #import "RSA.h" @interface ViewController () @end @implementation ViewController - (v

PHP加密解密数字

1 <?php 2 /** 3 * 加密解密类,PHP加密解密数字,适用于URL加密 4 * 该算法仅支持加密数字.比较适用于数据库中id字段的加密解密,以及根据数字显示url的加密. 5 * @version alpha 6 * @加密原则 标记长度 + 补位 + 数字替换 7 * @加密步骤: 8 * 将a-z,A-Z,0-9 62个字符打乱,取前M(数字最大的位数)位作为 标记长度字符串,取第M+1 到第M+10位为数字替换字符串,剩余的为补位字符串 9 * 1.计算数字长度n,取乱码的第

iOS证书相关概念详解

关于开发证书配置(Certificates&Identifiers&Provisioning Profiles),相信做iOS开发的同学没少被折腾,本文将对相关概念做个系统的梳理. 在进行iOS证书申请之前,假设你使用过Apple设备且注册过Apple ID.首先,必须加入苹果开发者计划(Enrollin iOS Developer Program to become a member),分为Individual和Company/Organization两种类型. 下文主要基于个人开发者账