网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > Java
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
本月文章推荐
.使用Java访问网络资源.
.J2EE1.4新特性之Servlet2.4新特性.
.学会怎么用Java Web Start部署应.
.用 Java 保存位图文件.
.浅谈即时战略游戏在 J2ME 上的实.
.Java语言深入-构造函数的继承问题.
.java applet 画图板.
.创建接口.
.在 Java 应用程序中计划重复执行.
.一个象棋手机游戏的源代码.
.Apache与Tomcat整合问题的新方法.
.JAVA程序员必读:基础篇(4.a)-类和.
.Java多线程编程经验谈.
.关于cachedRowSet的一篇文章(jav.
.java中找到资源文件的路径.
.J2EE项目执行:若干最佳实践.
.Java嵌入式开发之四.
.Java 理论与实践:嗨,我的线程到.
.X3D实战基础讲座之十二.
.使用模仿对象进行单元测试.

JDK5.0环境下配置PKCS#11

发表日期:2008-1-5



  这篇文章不介绍具体的编程方法,而是针对PKCS#11的初学者介绍如何在JDK5.0环境中配置PKCS#11,具体的编程方法可以关注我的下一篇文章,或者参考PKCS#11手册以及SUN MicroSystem公司关于PKCS#11的手册。


需要的环境:

JDK5.0版本已经可以支持对PKCS#11的操作,这里就介绍一下如何实现在JDK5.0环境下配置PKCS#11,并且根据不同的操作系统提供相应的解决方案。

首先介绍一下配置环境:JDK5.0,支持标准PKCS#11的设备(包括Smartcard,加密卡等等),支持PKCS#11的系统(WINDOWS/Linux/UNIX等),以及设备供给商提供的标准PKCS#11接口。(注:PKCS#11接口只是一个动态库文件,其中封装了PKCS#11标准函数,在不同的平台上其格式不同,例如在WINDOWS上其格式是*.DLL,在LINUX上其形式是*.so)

配置方法:

在JDK5.0环境中配置访问PKCS#11的方法非常简单:只用编辑一个*.CFG文件就可以了。因为JDK5.0中已经做好了对PKCS#11的桥接。具体方法是:

1、在*.CFG文件中编辑好相应的参数和对应的值。

2、在Java语言中用Provider p = new sun.security.pkcs11.SunPKCS11(*.cfg文件的绝对路径)

3、进行相应的操作,具体的操作会在我的下一片文章中介绍。

具体*.cfg的内容以及格式是:

1、name=value 其中name是指明后面的value是该PKCS#11的名称。

2、library=*.dll/*.so的绝对路径 library后面是指明标准PKSC#11接口的绝对地址

3、description=value是该PKCS#11的注释,可以通过前面的Provider p的getInfo方法得到其值

4、slotListIndex = value/slot = value 这个标示比较非凡,假如该PKCS#11的硬件提供商提供了多个可以支持该PKCS#11的设备,那么不同设备之间必须通过不同的slot来区分,那么,在使用的时候必须明确的了解具体的硬件对应的slot的值,其中slotListIndex和slot中只用一个即可。假如在配置文件中不指明的话,那么默认的是slot=0。这时假如提供商提供了多个硬件设备,则你的程序中智能调用slot=0的那个设备。所以建议在编辑该*.cfg时添加该参数。

5、其余的参数并不是很常用,欲具体了解可以访问http://java.sun.com/j2se/1.5.0/docs/guide/security/p11guide.Html

解决方案:

跨平台时JAVA语言的一大特性,那么PKCS#11也应做到跨平台操作。当然,前提是该实现了PKCS#11接口的硬件可以跨平台(专有驱动或者是无驱型)。但由于*.cfg中指定PKCS#11接口的地址是绝对地址,所以假如想要做到跨平台就要动态的产生cfg文件了。

具体的解决方案如下:

1、首先确认该硬件可以支持当前的系统。

2、确认已经安装了相应的驱动(无驱型设备的驱动是由系统提供的)

3、确认该硬件的slotListIndex或者slot值

4、使用System.getProperty(“java.home”);获得路径,做为存储*.CFG文件的目录。取名为cfgpath

5、用JFileChooser来选择PKCS#11文件,从而获得library的值,取名为LibPath

6、建立一个FileOutputStream来存储*.CFG文件,分别写入name的值,library的值(LibPath)description的值和slotListIndex的值。这样,就可以动态的创建cfg文件了。

7、然后 就可以用Provider p = new sun.security.pkcs11.SunPkcs11(cfgpath);来加载文件,从而达到通过PKCS11来访问硬件的目的。

前面的4~7步只是一个demo,具体实施时可以根据具体的情况来改变。到此JDK5.0环境下配置PKCS#11就已经介绍完了。假如希望了解JAVA语言中的PKCS#11操作,请关注下一篇文章。

请尊重作者原创,转发时请保留作者信息

作者:鲍冠辰, 软件加密工程师  就职于 飞天诚信科技有限公司

上一篇:JDK的环境配置 人气:1174
下一篇:classpath详解(谨献给那些找不到北的朋友) 人气:623
浏览全部Java的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐