投递文章投递文章 投稿指南投稿指南 RSS订阅RSS订阅

java对安全性的支持(论文)

来源:iT堂整理 发布时间:2008-01-06 收藏 投稿 字体:【

主要有如下几种命令:

²        - certreq – 产生一个证书签名请求(Generate a Certificate Signing Request ,CSR)给 CA , 由它来认证自己的证书。

²         -delete – 删除对应的密钥库的记录

²        - export  将公钥证书输出到某个文件

²        - genkey. 在密钥库中存入私钥- 公钥对, 后者保存在一个自签的证书中。

²        --import  将一个信任的证书导入,或者是接到了CA 的回复,将该证书取代原来密钥库中自签的证书。

²        keypasswd – 为某私钥分配密码

²        -list -  列出密钥库中所有入口

²        -storepasswd  给密钥库分配密码

 Java文档处理工具(jar)
如果要对代码签名,需要先用 jar 将其打包,然后用jarsigner 来签名, 命令的基本格式是jar cf jar-file input-file(s)

Java 文档签名及验证工具 (jarsigner)
jarsigner 工具通过密钥库中的数据来对 jar 文件进行签名和认证; 

策略编辑器  (policytool )
编辑系统的策略文件

使用代码签名
1.签名方大致流程如下所示 :


各个步骤通过前面的工具使用介绍,具体实现细节就不再描述了, 现在列出自己尝试时使用的几个命令:

²        [ 生成私钥]keytool -genkey -alias signFiles -keypass 123456 -keystore  store -storepass 123456

²        [ 打包 ]jar  cvf  algrim.jar *.class 

²        [ 签名 ]jarsigner -keystore store -signedjar sAlgrim.jar Algrim.jar signFiles 

²        [生成证书] keytool -export -keystore store -alias signFiles -file cer.cer 

2.接收方大致流程如下所示 :
直接运行代码是不允许的,只有先将证书引入本地的 keystore , 作为信任的证书插入;通过使用 Policy Tool 来配置相应的策略文件,通过两种方式来运行他:

1.         用 java -Djava.security.manager -Djava.security.policy= raypolicy -cp sCount.jar  AppName 的形式  

2.         通过配置浏览器使用的j ava.home\lib\security\java.security  文件,就可以带安全检查地运行该程序。

文件交换
在发送文件时,可以通过数字签名来保证文件的一致性和发送者的身份。步骤如下 : 

发送者[基本流程同代码签名是一样的]

接收者

与代码签名的不同之处在于是通过 jarsigner 来验证的。

 

使用 JDK 1.2 的API 来构造自己的例程
 基础 API
产生公钥和密钥对
²        [ 得到密钥产生器]KeyPairGenerator keyGen = KeyPairGenerator.getInstance("DSA", "SUN");

²        [ 初始化密钥产生器] SecureRandom random = SecureRandom.getInstance("SHA1PRNG", "SUN"); keyGen.initialize(1024, random);

²        [产生公钥和密钥] KeyPair pair = keyGen.generateKeyPair();PrivateKey priv = pair.getPrivate();  PublicKey pub = pair.getPublic();

 

对数据签名
²        [ 得到一个签名对象] Signature dsa = Signature.getInstance("SHA1withDSA", "SUN");

²        [初始化签名对象]  dsa.initSign(priv);

²        [对数据签名 ] dsa.update(buffer, 0, len);

²        [得到签名的数据] byte[] realSig = dsa.sign();

存储签名和公钥
²        签名结果直接按字节流存储

²        公钥通过pub.getEncoded(); 先转换为字节流来处理

从文件中取得公钥
²        先从文件中读到字节流中  à encKey

²        [构造一个密钥说明类]  X509EncodedKeySpec pubKeySpec = new X509EncodedKeySpec(encKey);

²        [构造一个密钥管理器]  KeyFactory keyFactory = KeyFactory.getInstance("DSA", "SUN");

²        [取得公钥]  PublicKey pubKey = keyFactory.generatePublic(pubKeySpec);

最新评论:
评论内容:请自觉遵守互联网相关政策法规。
用户名: 密码: 匿名 注册
热门文章
随机推荐
About iTtang - 联系方法  - 专题列表 - 友情链接  -  高级搜索   -  帮助中心  -