第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