USBKey技术在J2EE项目中的应用
来源:互联网 发布:手机公司记账软件 编辑:程序博客网 时间:2024/05/06 07:52
引导
USBKey技术和数字证书技术一样,也是数字签名的一种应用。我们知道,数字签名是非对称密钥加密技术与数字摘要技术的应用。所以归根结底使用USBKey还是用到非对称加密。
什么是USBKey
USBKey主要包含两块:加密芯片和带有安全存储的空间。
加密芯片可以实现PKI体系中使用的数据摘要,数据加解密和签名的各种算法,加解密算法在USBKey内进行,保证用户密钥不会出现在计算机内存中,从而杜绝了用户密钥被黑客截取的可能性。
带有安全存储的空间内部划分成数据存储区和密钥存储区,将软件的一些重要信息(如序列号等)保存在多功能锁中的数据存储区中,将进行加密用的密钥写在多功能锁中的密钥存储区中,密钥外界是不能获得的。
USBKey初始化过程
1、将密码算法程序烧制在USBKey的ROM中。
2、通过产生公私密钥对的程序生成一对公私密钥,公钥保存在服务器端,供验签使用。
3、私钥存储于USBKey密钥存储区,不允许外部访问。
基于使用非对称加密技术以及密钥运算过程由加密芯片在USBKey内部完成,外界无法获取密钥。因此使用USBKey是安全的。
USBKey应用步骤
1、产生一个随机字符串(这个字符串可以是服务器端传给页面,也可以是页面通过JS自己生成)
2、调用USBKey的签名方法对上面的随机字符串签名得到签名串(这一步一般需要安装USBKey厂商的ActiveX控件)
3、将随机字符串、签名串、用户名、密码等提交表单到后台
4、后台根据用户名密码判断用户,并得到用户的公钥(公钥是跟用户关联的,当然最简单的就是作为用户表的一个字段)。根据提交的随机字符串、签名串、公钥验签。
<!-- USBKey ActiveX 空间 不同厂商不一样 --><OBJECT id="OCX" style="display:none" classid="clsid:B33CED4C-53E0-4F76-B80C-CEAA6DE23551" VIEWASTEXT></OBJECT>
// 生成随机数并获得签名var randomNo = Math.round(Math.random() * 10000);$('#__randomNo').val(randomNo);$('#__key').val(ocx.SignMsg(randomNo));
// 验证签名boolean b = KeyHelper.isValidKey(user.getPublickey(), sigenedUsbkey, randomNo);if (!b) {setResult(false, "验证用户USBKEY不通过!", request);return mapping.findForward(LOGIN);}// 验证签名public static boolean isValidKey(String userPubKey, String key, String randomNo) throws Exception {JSignVerify signverify = new JSignVerify();signverify.ReadRawPublicKeyFromBigInt(userPubKey);return signverify.VerifyMemorySHA1(randomNo.getBytes(), Base16.hexStrToBytes(key));}
- USBKey技术在J2EE项目中的应用
- J2EE技术在电子商务中的应用研究
- Struts框架技术在J2EE中的研究和应用
- Spring的IOC在J2EE项目中的应用
- 在通信领域应用J2EE技术?
- 再战MVC(二)-- MVC模式在J2EE技术中的应用
- 论架构技术在项目中的具体应用
- GIS技术在特色数据库项目建设中的应用研究
- Cell插件在J2EE系统中的应用
- ThreadLocal在J2EE轻量级开发中的应用
- USBKey系列产品在电子银行领域的应用概述
- J2EE 应用服务器技术
- J2EE 中的技术
- 整理一个ANT在J2EE项目中的应用,含预编译JSP和打包WAR/EAR文件!
- 整理一个ANT在J2EE项目中的应用,含预编译JSP和打包WAR/EAR文件!
- 整理一个ANT在J2EE项目中的应用,含预编译JSP和打包WAR/EAR文件!
- 整理一个ANT在J2EE项目中的应用,含预编译JSP和打包WAR/EAR文件!
- 整理一个ANT在J2EE项目中的应用,含预编译JSP和打包WAR/EAR文件!
- Oracle column、pagesize、linesize命令,简单报表及计算
- hdu 4681 String(暴力&dp&LCS)
- Mini2440 USB gadget --使用与测试
- HTML中调用JS变量
- 汉诺塔,逆波兰表达式,苹果放置递归实现
- USBKey技术在J2EE项目中的应用
- Windows中常见的文件后缀名解释表
- ora-12528 TNS 监听程序所有适用例程都无法建立新连接
- 第十四周 项目4--数组的排序
- 贪吃蛇
- android发送http请求
- PHP字符截取函数。兼容中文,英文,中英文混杂等情况
- Oracle中打开10046 Trace的各种方法
- POJ 2752 KMPnext的应用