数字签名与数字证书

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

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

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

这样比对称加密更安全

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. Java -- Matrix的一点认识

    例如在如下一段代码中: Matrix m = new Matrix(2,3); for(int i=0; i<m.getRowDimension(); i++) { for(int j=0; j ...

  2. [洛谷P3701]「伪模板」主席树

    题目大意:太暴力了,就不写了,看这儿 题解:对于每个$byx$的人,从源点向人连边,容量为此人的寿命. 对于每个手气君的人,从人向汇点连边,容量为此人的寿命. 对于每个$byx$的人与手气君的人,如果 ...

  3. vue实现多个元素或多个组件之间动画效果

    多个元素的过渡 <style> .v-enter,.v-leave-to{ opacity: 0; } .v-enter-acitve,.v-leave-active{ opacity: ...

  4. mongo-aggregate命令详解

    一.aggregate执行流程和特性 1.执行流程: db.collection.aggregate()是基于数据处理的聚合管道,每个文档通过一个由多个阶段(stage)组成的管道,可以对每个阶段的管 ...

  5. InnoDB的多版本并发控制(MMVC)

    InnoDB的MVCC之(乐观锁),是通过在每行记录保存两个隐藏列来实现的.这两个列,一个是存创建时间,一个是删除时间,这里的时间指的是,系统版本号,并不是真正的时间值. 每开始一个新的事务,系统版本 ...

  6. poj1039 Pipe(计算几何叉积求交点)

    F - Pipe Time Limit:1000MS     Memory Limit:10000KB     64bit IO Format:%I64d & %I64u Submit Sta ...

  7. linux 内核库函数 【转】

    转自:http://blog.chinaunix.net/uid-20321537-id-1966892.html 当编写驱动程序时,一般情况下不能使用C标准库的函数.Linux内核也提供了与标准库函 ...

  8. java基础练习 15

    import java.util.Scanner; public class Fiftheen { /*有n个人围成一圈,顺序排号.从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下 ...

  9. Error:Execution failed for task ':app:transformClassesWithDexForDebug'. > com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: java.util.concurrent.Exec

    Error:Execution failed for task ':app:transformClassesWithDexForDebug'.> com.android.build.api.tr ...

  10. Centos 6.3软件安装

    一.软件安装包的类型: 1. tar包,如software-1.2.3-1.tar.gz.它是使用UNIX系统的打包工具tar打包的. 2. rpm包,如software-1.2.3-1.i386.r ...