图文讲解:什么是数字签名

图文讲解:什么是数字签名

数字签名简单介绍 By David Youd

前言

近期在在网上浏览SSL协议加密有关的文章时,越感对“数字签名”产生了不小的困惑。直接搜索“什么是数字签名”,发现了这篇早期文章:

http://www.youdzone.com/signature.html,非常早。可是依然耐人寻味。在网贴上也找到了相关的翻译:http://www.ruanyifeng.com/blog/2011/08/what_is_a_digital_signature.html。

读了下来,认为它这个翻译事实上仅仅是义译。连“故事情节”都变动不少。于是就自己动起手来,于是就有了本文..

译文

Bob有两把钥匙,一把被称作公共钥匙。即公钥;还有一把则被称作私钥。

Bob的公钥对于须要它的不论什么人都能得到,可是他的私钥则自己保留。密钥(公钥和私钥)是用来加密信息的。

加密信息的过程意味着“混淆打乱”,以至于仅仅有拥有合适密钥的人才干将其再次变得可读。

Bob的两把钥匙中,不论什么一把用来加密数据,还有一把就能解密数据。

Susan(例如以下展示)用Bob的公钥加密了一条信息发给Bob,Bob则用私钥来解密信息进行读取。Bob的任一同事可能都能够拿到Susan已经加密的信息。可是没有Bob的私钥,这些数据都是无用的。

利用他的私钥和适当的软件。Bob放置了数字签名在文档和一些数据中。这个数字签名是Bob放在数据中的,是对于Bob而言唯一的“标识”,是很难以捏造的。而且,这个签名可以确保当数据发生不论什么变动时都会被发现。

对文档签名时。Bob的软件会将数据揉碎压缩成只几行。这个过程被称为“HASH校验”。形成的几行则被称作信息的摘要。(直接将信息摘要还原成原始的数据信息是不可能的)

然后Bob的软件再利用他的私钥加密信息的摘要。这个结果就是数字签名。

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvemloYW8yMDEy/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" >

最后,Bob的软件将这个数字签名与信息文档放在一块。全部的数据已经被有所标识了。

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvemloYW8yMDEy/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" >

如今Bob把文档传递给了Pat。

Plot 纠结ing..(悲剧,没故事...)

碰巧的是。Suan工作在公司的CA中心(证书认证)。Susan能够对Bob的公钥和他的一些资料信息一并签名,简单地为Bob制作一个数字证书。

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvemloYW8yMDEy/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" >

如今Bob的同事可以通过检測Bob受信任的证书来确保他们拥有的公钥确实是Bob的。其实,Bob公司中没有人会接受没有Susan生成证书的那个签名。这个就给了Susan撤销私钥被泄露的数字证书的权利。而这差点儿是不太可能的。

Susan的CA证书验证则被广泛的接受。

我们接着说Bob把已经签名的文档发给了Pat。

为了验证在文档上的数字签名。Pat首先借助软件用Susan(即CA)的公钥来检測Bob文档上的证书。假设顺利解开了证书则证明是Susan生成的它。

解开证书之后。Pat能够通过联系CA中心。与Bob证书上的信息对比,以检查文档是否被改动过。

然后。pat从证书中拿到Bob的公钥。用它来检測Bob的签名。

假设Bob的公钥可以顺利解开签名,Pat就行确定这个签名是利用Bob的私钥生成的。同一时候也匹配了Susan颁发的证书公钥。而且。假设签名是对比的,也说明了Doug不可能改动了文档内容。

虽然,这些步骤看起来挺让人头疼的,它们却以Pat有关的用户友好的软件场景手把手似的。

验证签名信息,Pat仅仅需点击下图:

(图为验证数字证书的标识)

有关下载

链接: http://pan.baidu.com/s/1qWNrSZy password: vsi1

时间: 2024-08-26 02:26:48

图文讲解:什么是数字签名的相关文章

图文讲解:iOS App提交流程

原地址:http://www.toceansoft.com/ios/3287.jhtml 摘要: 由于苹果的机制,在非越狱机器上安装应用必须通过官方的App Store,开发者开发好应用后上传App Store,也需要通过审核等环节.AppCan作为一个跨主流平台的一个开发平台,也对ipa包上传App Store作了支持.本文从三个流程来介绍如何实现AppCan在线编译出ipa包,以及上传到苹果App Store. 一.证书的导出 1.1.前期工作 首先你需要有一个苹果的开发者帐号,一个Mac系

eclipse 发布签名APK图文讲解

eclipse 发布 签名android 程序 1 在项目上右键 export 2 export android application 3 第一次发布 要创建一个新的keystore 4 填写key信息 5 6 finish 第二次发布的时候  可以直接选择已有的keystore 选择以后的alias 或者新建 ok  搞定 eclipse 发布签名APK图文讲解,布布扣,bubuko.com

Android NDK r8 Cygwin CDT 在window下开发环境搭建 安装配置与使用 详细图文讲解

android 最新 NDK r8 在window下开发环境搭建 安装配置与使用 详细图文讲解,完整实际配置过程记录(原创) 一直想搞NDK开发却一直给其他事情耽搁了,参考了些网上的资料今天终于把环境搭建起来了,把过程记录下来分享给大家. 内容目录: 1.默认基础环境 2.NDK下载与配置 3.安装Cygwin 4.用NDK编译 5.安装CDT插件 6.安装Sequoyah插件 7.JNI编译环境配置 画了一个思维导图让大家一目了然配置过程 ---------------------------

【转】android 最新 NDK r8 在window下开发环境搭建 安装配置与使用 详细图文讲解,完整实际配置过程记录(原创)

原文网址:http://www.cnblogs.com/zdz8207/archive/2012/11/27/android-ndk-install.html android 最新 NDK r8 在window下开发环境搭建 安装配置与使用 详细图文讲解,完整实际配置过程记录(原创) 一直想搞NDK开发却一直给其他事情耽搁了,参考了些网上的资料今天终于把环境搭建起来了,把过程记录下来分享给大家. 内容目录: 1.默认基础环境 2.NDK下载与配置 3.安装Cygwin 4.用NDK编译 5.安装

链表翻转的图文讲解(递归与迭代两种实现)

链表的翻转是程序员面试中出现频度最高的问题之一,常见的解决方法分为递归和迭代两种.最近在复习的时候,发现网上的资料都只告诉了怎么做,但是根本没有好好介绍两种方法的实现过程与原理.所以我觉得有必要好好的整理一篇博文,来帮忙大家一步步理解其中的实现细节.  我们知道迭代是从前往后依次处理,直到循环到链尾:而递归恰恰相反,首先一直迭代到链尾也就是递归基判断的准则,然后再逐层返回处理到开头.总结来说,链表翻转操作的顺序对于迭代来说是从链头往链尾,而对于递归是从链尾往链头.下面我会用详细的图文来剖析其中实

Absolute(绝对定位)与relative(相对定位)的图文讲解

Position的属性值有:1.     Absolute:绝对定位,是相对于最近的且不是static定位的父元素来定位 2.     Fixed:绝对定位,是相对于浏览器窗口来定位的,是固定的,不会跟屏幕一起滚动. 3.     Relative:相对定位,是相对于其原本的位置来定位的. 4.     Static:默认值,没有定位. 5.     Inherit:继承父元素的position值. 对于初学者来说,position的属性很让人头疼,特别是absolute与relative之间的

在VS2017上使用C#调用非托管C++生成的DLL文件(图文讲解)

原文:在VS2010上使用C#调用非托管C++生成的DLL文件(图文讲解) 背景 在项目过程中,有时候你需要调用非C#编写的DLL文件,尤其在使用一些第三方通讯组件的时候,通过C#来开发应用软件时,就需要利用DllImport特性进行方法调用.本篇文章将引导你快速理解这个调用的过程. 步骤 1. 创建一个CSharpInvokeCPP的解决方案: 2. 创建一个C++的动态库项目 CSharpInvokeCPP.CPPDemo: 3. 在Windows桌面项目中,选择“动态链接库DLL”,其他按

C++动态内存管理好难怎么办?零基础图文讲解,小白轻松理解原理

首先我们先了解一下内存: C语言使用malloc/free动态管理内存空间,C++引入了new/delete,new[]/delete[]来动态管理内存.如果大家在自学C++中遇到困难,想找一个学习C++的环境,可以加入我的C++学习交流扣群先是513801371,能够共同学习交流和分享!![](https://s1.51cto.com/images/blog/201905/11/f3795621980960d47c291497e516b846.jpg?x-oss-process=image/w

转:Qt编写串口通信程序全程图文讲解

转载:http://blog.csdn.net/yafeilinux/article/details/4717706  作者:yafeilinux (说明:我们的编程环境是windows xp下,在Qt Creator中进行,如果在Linux下或直接用源码编写,程序稍有不同,请自己改动.) 在Qt中并没有特定的串口控制类,现在大部分人使用的是第三方写的qextserialport类,我们这里也是使用的该类.我们可以去 http://sourceforge.net/projects/qextser