• Java 数字签名原理及产生


    数字签名与数字证书

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

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

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

    这样比对称加密更安全

    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 的 libsecurity 下。

    2. 将公钥导入到 cacerts

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

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

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

  • 相关阅读:
    Linux 命令查找文件中某个字段所存在的位置
    PHP in_array() 函数
    php一维数组如何追加到二维数组
    电脑切换窗口
    微擎前端逻辑判断的时弹框
    JDBC批量处理
    数据库事务
    处理BLOB
    JDBC自动生成主键值
    JDBC的元数据
  • 原文地址:https://www.cnblogs.com/longshiyVip/p/5376341.html
Copyright © 2020-2023  润新知