数字签名与数字证书

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

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

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

这样比对称加密更安全

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 数字签名原理及产生的更多相关文章

  1. 一个基于RSA算法的Java数字签名例子

    原文地址:一个基于RSA算法的Java数字签名例子 一.前言: 网络数据安全包括数据的本身的安全性.数据的完整性(防止篡改).数据来源的不可否认性等要素.对数据采用加密算法加密可以保证数据本身的安全性 ...

  2. [JavaEE]Java NIO原理图文分析及代码实现

    转http://weixiaolu.iteye.com/blog/1479656 目录: 一.java NIO 和阻塞I/O的区别      1. 阻塞I/O通信模型      2. java NIO ...

  3. JAVA监听器原理

    http://blog.csdn.net/longyulu/article/details/25054697 JAVA监听器原理 标签: 监听器 2014-05-05 15:40 9070人阅读 评论 ...

  4. Java NIO原理分析

    Java IO 在Client/Server模型中,Server往往需要同时处理大量来自Client的访问请求,因此Server端需采用支持高并发访问的架构.一种简单而又直接的解决方案是“one-th ...

  5. Java跨平台原理

    此篇博文主要源自网络xiaozhen的天空的博客:http://xiaozhen1900.blog.163.com/blog/static/1741732572011325111945246/ 1.是 ...

  6. 【转】Java跨平台原理

    原文地址:http://www.cnblogs.com/gw811/archive/2012/09/09/2677386.html 1.是么是平台 Java是可以跨平台的编程语言,那我们首先得知道什么 ...

  7. 《Java虚拟机原理图解》 1.2、class文件里的常量池

    [最新更新:2014/11/11]  了解JVM虚拟机原理 是每个Java程序猿修炼的必经之路. 可是因为JVM虚拟机中有非常多的东西讲述的比較宽泛.在当前接触到的关于JVM虚拟机原理的教程或者博客中 ...

  8. Java NIO原理图文分析及代码实现

    原文: http://weixiaolu.iteye.com/blog/1479656 目录: 一.java NIO 和阻塞I/O的区别      1. 阻塞I/O通信模型      2. java ...

  9. Java编译原理

    http://wenku.baidu.com/view/f9b1734b87c24028915fc3a3.html Java编译原理 1. 关于动态加载机制 学习Java比C++更容易理解OOP的思想 ...

随机推荐

  1. [Atcoder Grand Contest 006 F][AGC006F] Blackout [染色]

    题面 传送门 思路 首先,这个涂黑的方法我们来优化一下模型(毕竟当前这个放到矩形里面,你并看不出来什么规律qwq) 我们令每个行/列编号为一个点,令边(x,y)表示一条从x到y的有向边 那么显然只要有 ...

  2. [bzoj3813] 奇数国 [线段树+欧拉函数]

    题面 传送门 思路 这题目是真的难读......阅读理解题啊...... 但是理解了以后就发现,题目等价于: 给你一个区间,支持单点修改,以及查询一段区间的乘积的欧拉函数值,这个答案对19961993 ...

  3. BZOJ3668 [Noi2014]起床困难综合症 【贪心】

    题目 21 世纪,许多人得了一种奇怪的病:起床困难综合症,其临床表现为:起床难,起床后精神不佳.作为一名青春阳光好少年,atm 一直坚持与起床困难综合症作斗争.通过研究相关文献,他找到了该病的发病原因 ...

  4. select函数详解

    网络编程中一个很重要的函数,没有整理,直接转过来,讲的还是蛮详细的. 转自:http://blog.csdn.net/zhw888888/archive/2009/03/29/4034515.aspx ...

  5. zepto方法

    1.$.inArray $.inArray v1.0+ $.inArray(element, array, [fromIndex]) ⇒ number 搜索数组中指定值并返回它的索引(如果没有找到则返 ...

  6. Eclipse中使用Maven创建Web时错误

    一.问题描述 使用Eclipse创建Maven项目时,报一下错误,不能创建成功. 二.问题原因 错误详细描述是说 Could not resolve archetype org.apache.mave ...

  7. jsp的九大内置对象及EL表达式的隐含对象

    九大内置对象: request         request对象具有请求域,即完成客户端的请求之前,该对象一直有效. response       response对象具有页面作用域,即访问一个页面 ...

  8. datatable to list 方法转换

    #region 实体转换 /// <summary> /// add extension method for datable /// </summary> /// <p ...

  9. .net yield return

    yield在迭代器块中用于向枚举数对象提供值或发出迭代结束信号.它的形式为下列之一: yield return <expression>; yield break; 计算表达式并以枚举数对 ...

  10. webservice跨域文件,好多年前的东西,远程调用,js服务器端使用,可以远程调用

    1.clientaccesspolicy.xml <?xml version="1.0" encoding="utf-8" ?> <acces ...