码迷,mamicode.com
首页 > 编程语言 > 详细

Java 数字签名原理及产生

时间:2016-04-10 23:51:52      阅读:253      评论:0      收藏:0      [点我收藏+]

标签:

数字签名与数字证书

关于数字签名的介绍可以参考以上这篇。

这里稍微说一下不对称加密的方式:

用公钥加密的内容只能用私钥解密,用私钥加密的内容只能用公钥解密。

这样比对称加密更安全

 

Java 中数字签名的方式

技术分享

跟普通文本加密的原理是一样的。

 

Java 数字签名和数字证书的作用

毋庸置疑,这些都是为了安全性而考虑的。

比如对于applet 来说,它可以保护用户(客户端) 文件和私人数据不被恶意的程序或病毒感染和破坏,鉴别代码提供者的身份。对于开发者而言,通过使用API方法,能够将安全性功能集成到应用程序中,因为API的体系结构能够定义和集成对特定的资源的使用权限、加密、 安全性管理、策略管理,并提供了一些类来管理公钥/密钥对及信任用户群的公钥证书。同时系统管理员、开发者和用户可以使用它提供的工具管理钥匙库,在 JAR文件中生成数字签名、签名的完整性检测、创建和修改策略文件

来看一下 1个Applet 的开发和运行的过程:

在代码的分发端: 
(1)开发Java源程序并对其进行编译。 
(2)用JAR工具对类文件和资源文件进行封装。 
(3)用keytool创建公钥和密钥,生成X。509V1签名证书,输出证书。 
(4)通过jarsigner工具用生成的密钥对JAR文件进行数字签名。

在代码的接收端: 
(1)用keytool输入证书视其为可信任。 
(2)用policytool创建和修改安全性策略配置文件,授权请求的访问权限。 
(3)从网络取得字节码,用公钥验证数字签名证书和文档代码的完整性。 
(4)验证字节码的合法性,根据策略文件分配相应权限。 
(5)执行代码,完成后被垃圾回收器回收内存。 

在用公钥验证数字签名证书之前,接收方需要确认公钥自身的可靠性,因此通常情况是提供一个包含公钥的证书而不是公钥自身。1个证书包括:
(1)1个公钥。 
(2)1个唯一的名字实体(个人或公司),它是证书的所有者,包含用户名字、公司、组织、城市、地址、国家代码、省份等信息。 
(3)数字签名:1个证书被1个分发者的实体签名,保证证书确实包含另1个实体(所有者)的公钥。 
(4)分发者的标识名信息。 

 

Applet 开发的实例步骤,

在服务端:

1. 开发完代码, 使用jar 或其他方式达成 XX.jar 档;

2. 为 jar 档创建 keystore 和keys.

.keystore 使用来存放密钥和公钥的文件

keytool -genkey -keystore XX.keystore –alias XX

这里会输入一堆的设定信息

3. 使用产生的密钥对 jar 档进行签名

jarsigner -keystore XX.keystore XX.jar XX

4. 将公钥导入到一个cer 文件中,这个文件会被导入到客户端

keytool -export -keystore XX.keystore -alias XX -file XX.cer 

接着这些文件 XX.jar;XX.keystore; XX.cer 放入服务端的目录下。

 

在客户端:

1. 将服务端生成的 XX.cer 导入到jre 的 lib\security 下。

2. 将公钥导入到 cacerts

keytool -import -alias XX -file XX.cer  -keystore cacerts

这儿要你输入的是cacerts的密码,应该是changeit

3. 修改policy策略文件,在dos状态下使用命令 policytool

Java 数字签名原理及产生

标签:

原文地址:http://www.cnblogs.com/longshiyVip/p/5376341.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!