请解释“数字签名”的概念及工作原理?

如题所述

数字签名(digital signature )概念:以电子形式存在于数据信息之中的,或作为其附件的或逻辑上与之有联系的数据,可用于辨别数据签署人的身份,并表明签署人对数据信息中包含的信息的认可。
数字签名的工作原理:“发送报文时,发送方用一个哈希函数从报文文本中生成报文摘要,然后用自己的私人密钥对这个摘要进行加密,这个加密后的摘要将作为报文的数字签名和报文一起发送给接收方,接收方首先用与发送方一样的哈希函数从接收到的原始报文中计算出报文摘要,接着再用发送方的公用密钥来对报文附加的数字签名进行解密,如果这两个摘要相同、那么接收方就能确认该数字签名是发送方的。   数字签名有两种功效:一是能确定消息确实是由发送方签名并发出来的,因为别人假冒不了发送方的签名。二是数字签名能确定消息的完整性。因为数字签名的特点是它代表了文件的特征,文件如果发生改变,数字签名的值也将发生变化。不同的文件将得到不同的数字签名。 一次数字签名涉及到一个哈希函数、发送者的公钥、发送者的私钥。”这报文鉴别的描述!数字签名没有那么复杂。   数字签名:   发送方用自己的密钥对报文X进行D运算,生成不可读取的密文Dsk,然后将Dsx传送给接收方,接收方为了核实签名,用发送方的密钥进行E运算,还原报文。
每个人都有一对“钥匙”(数字身份),其中一个只有她/他本人知道(密钥),另一个公开的(公钥)。签名的时候用密钥,验证签名的时候用公钥。又因为任何人都可以落款声称她/他就是你,因此公钥必须向接受者信任的人(身份认证机构)来注册。注册后身份认证机构给你发一数字证书。对文件签名后,你把此数字证书连同文件及签名一起发给接受者,接受者向身份认证机构求证是否真地是用你的密钥签发的文件。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-11-28
数字签名(又称公钥数字签名、电子签章)是一种类似写在纸上的普通的物理签名,但是使用了公钥加密领域的技术实现,用于鉴别数字信息的方法。一套数字签名通常定义两种互补的运算,一个用于签名,另一个用于验证。
主要功能
  保证信息传输的完整性、发送者的身份认证、防止交易中的抵赖发生。   数字签名技术是将摘要信息用发送者的私钥加密,与原文一起传送给接收者。接收者只有用发送的公钥才能解密被加密的摘要信息,然后用HASH函数对收到的原文产生一个摘要信息,与解密的摘要信息对比。如果相同,则说明收到的信息是完整的,在传输过程中没有被修改,否则说明信息被修改过,因此数字签名能够验证信息的完整性。   数字签名是个加密的过程,数字签名验证是个解密的过程。

如何实现
  数字签名算法依靠公钥加密技术来实现的。在公钥加密技术里,每一个使用者有一对密钥:一把公钥和一把私钥。公钥可以自由发布,但私钥则秘密保存;还有一个要求就是要让通过公钥推算出私钥的做法不可能实现。   普通的数字签名算法包括三种算法:   1.密码生成算法 ;   2.标记算法 ;   3.验证算法 。
编辑本段Java数字签名步骤
  1、将applet的class文件打包成*.jar(不会的可以在命令行中输入jar查看帮助)   2 首先我们要生成一个keystore 否则在签名的时候报如下错误   jarsigner 错误: java.lang.RuntimeException: 密钥库装入: C:\Documents and Settings\ij2ee\.keystore (系统找不到指定的文件。). (这边的ij2ee 是我当前系统用户名)   生成keystore的语句:keytool -genkey -alias 别名你可以自己写 -keyalg RSA -keystore .keystore   比如我的就是 keytool -genkey -alias ij2ee -keyalg RSA -keystore .keystore   下面是会出现的数字签名的一些步骤操作:   输入keystore密码:   再次输入新密码:   您的名字与姓氏是什么?   [Unknown]: ij2ee   您的组织单位名称是什么?   [Unknown]: mtk   您的组织名称是什么?   [Unknown]: mtk   您所在的城市或区域名称是什么?   [Unknown]: suzhou   您所在的州或省份名称是什么?   [Unknown]: jiangsu   该单位的两字母国家代码是什么   [Unknown]: cn   CN=jeson, OU=mtk, O=mtk, L=suzhou, ST=jiangsu, C=cn 正确吗?   [否]: y   输入<sfcs>的主密码   (如果和 keystore 密码相同,按回车):   这时候会在jdk的bin目录下生成 .keystore 。把这个.keystore文件移动到 C:\Documents and Settings\当前系统用户 的目录下面。   3、创建一个数字证书   在命令行中输入如下指令,peakCA和peakCALib自己起名字好了,3650是有效天数,就是10年左右,在创建证书的的时候,需要填写证书的一些信息和证书对应的私钥密码。这些信息包括 CN=xx,OU=xx,O=xx,L=xx,ST=xx,C=xx,都是中文,一看就懂的   keytool -genkey -alias peakCA -keyalg RSA -keysize 1024 -keystore peakCALib -validity 3650   4、将证书导出到证书文件中   在命令行中输入如下指令,peakCA和peakCALib自己起名字好了,******是你输入的密码   keytool -export -alias peakCA -file peakCA.cer -keystore peakCALib -storepass ****** -rfc   5、授权jar文件,在命令行中输入如下指令   jarsigner -keystore peakCALib myapplet.jar peakCA
相似回答