- 浏览: 147040 次
- 性别:
- 来自: 大连
文章分类
最新评论
-
zhuxinquan61:
你好,我是一个初学者,不知道是不是有validation.xm ...
struts中的Validator-rules.xml配置文件详解 -
wukele:
中文文件名压缩后是乱码~
JAVA压缩文件或文件夹的代码 -
suncjh:
高强度文件夹加密大师
U盘、移动硬盘加密工具绿色版 -
sbpcx:
assdust110 写道jiasky 写道请问楼主的头像是不 ...
Hibernate查询详解 -
yeshuang:
里面的很多的东西
SSH2整合步骤
1.
keytool -genkey -keystore chinajavaworld.keystore -alias chinajavaworld
这个命令用来产生一个密匙库,执行完毕后会在当前操作目录中产生一个chinajavaworld.keystore的文件,在执行命令的时候还有提示你输入密匙库的密码,要记住,后面还要用到。
2.
keytool -export -keystore chinajavaworld.keystore -alias chinajavaworld -file chinajavaworld.cer
这个命令用来产生签名时所要用的证书。
3.在JAVA里操作,将Cer内容改为BASE64编码
4.开始产生(测试)签名
接下来,你就可以把chinajavaworld.cer和签名放在你的产品目录里了。认证的时候读取cer证书中的公钥,对签名内容进行认证就可以了。
附
keytool -genkey -keystore chinajavaworld.keystore -alias chinajavaworld
这个命令用来产生一个密匙库,执行完毕后会在当前操作目录中产生一个chinajavaworld.keystore的文件,在执行命令的时候还有提示你输入密匙库的密码,要记住,后面还要用到。
2.
keytool -export -keystore chinajavaworld.keystore -alias chinajavaworld -file chinajavaworld.cer
这个命令用来产生签名时所要用的证书。
3.在JAVA里操作,将Cer内容改为BASE64编码
//从密钥库中读取CA证书 String storepass = "123456";//前面设置的密码 FileInputStream in = new FileInputStream("e:\\license\\a\\chinajavaworld.keystore"); KeyStore ks = KeyStore.getInstance("JKS"); ks.load(in, storepass.toCharArray()); //获取证书 java.security.cert.Certificate c1 = ks.getCertificate("chinajavaworld"); //BASE64编码 System.out.println(StringUtils.encodeBase64(c1.getEncoded()));//将chinajavaworld.cer内容改为这里输出的内容
4.开始产生(测试)签名
Signature signature; try { InputStream streamCert = new java.io.FileInputStream( "e:\\license\\a\\test.cer"); CertificateFactory factory = CertificateFactory.getInstance("X.509"); Certificate cert = factory.generateCertificate(streamCert); System.out.println(StringUtils.encodeBase64(cert.getEncoded())); signature = Signature.getInstance("SHA1withDSA"); signature.initVerify(cert.getPublicKey()); //要签名的指纹内容 String sss = "Welcome to www.chinajavaworld.com,The java world for you forever."; //获取CA证书私钥 PrivateKey priKey=(PrivateKey)ks.getKey("test",storepass.toCharArray()); System.out.println("priKey:"+StringUtils.encodeHex(priKey.getEncoded())); //用私钥签名 sig = Signature.getInstance("SHA1withDSA"); sig.initSign(priKey); ByteArrayOutputStream streamRaw0 = new ByteArrayOutputStream(); DataOutputStream streamSig0 = new DataOutputStream(streamRaw0); streamSig0.writeUTF(sss); sig.update(streamRaw0.toByteArray()); String signatureS = StringUtils.encodeHex(sig.sign()); System.out.println("signature: "+signatureS); //用公钥做验证测试 System.out.println("pubKey:"+StringUtils.encodeHex(cert.getPublicKey().getEncoded())); ByteArrayOutputStream streamRaw = new ByteArrayOutputStream(); DataOutputStream streamSig = new DataOutputStream(streamRaw); streamSig.writeUTF(sss); signature.update(streamRaw.toByteArray()); System.out.println("verify: "+signature.verify(StringUtils.decodeHex(signatureS))); } catch(Exception e) { System.out.println(e); }
接下来,你就可以把chinajavaworld.cer和签名放在你的产品目录里了。认证的时候读取cer证书中的公钥,对签名内容进行认证就可以了。
附
public static String encodeBase64(byte data[]) { boolean lineSep = false; int sLen = data == null ? 0 : data.length; if(sLen == 0) return new String(""); int eLen = (sLen / 3) * 3; int cCnt = (sLen - 1) / 3 + 1 << 2; int dLen = cCnt + (lineSep ? (cCnt - 1) / 76 << 1 : 0); char dArr[] = new char[dLen]; int s = 0; int d = 0; int cc = 0; do { if(s >= eLen) break; int i = (data[s++] & 0xff) << 16 | (data[s++] & 0xff) << 8 | data[s++] & 0xff; dArr[d++] = CA[i >>> 18 & 0x3f]; dArr[d++] = CA[i >>> 12 & 0x3f]; dArr[d++] = CA[i >>> 6 & 0x3f]; dArr[d++] = CA[i & 0x3f]; if(lineSep && ++cc == 19 && d < dLen - 2) { dArr[d++] = '\r'; dArr[d++] = '\n'; cc = 0; } } while(true); int left = sLen - eLen; if(left > 0) { int i = (data[eLen] & 0xff) << 10 | (left != 2 ? 0 : (data[sLen - 1] & 0xff) << 2); dArr[dLen - 4] = CA[i >> 12]; dArr[dLen - 3] = CA[i >>> 6 & 0x3f]; dArr[dLen - 2] = left != 2 ? '=' : CA[i & 0x3f]; dArr[dLen - 1] = '='; } return new String(dArr); } public static final String encodeHex(byte bytes[]) { StringBuffer buf = new StringBuffer(bytes.length * 2); for(int i = 0; i < bytes.length; i++) { if((bytes[i] & 0xff) < 16) buf.append("0"); buf.append(Long.toString(bytes[i] & 0xff, 16)); } return buf.toString(); } public static final byte[] decodeHex(String hex) { char chars[] = hex.toCharArray(); byte bytes[] = new byte[chars.length / 2]; int byteCount = 0; for(int i = 0; i < chars.length; i += 2) { int newByte = 0; newByte |= hexCharToByte(chars[i]); newByte <<= 4; newByte |= hexCharToByte(chars[i + 1]); bytes[byteCount] = (byte)newByte; byteCount++; } return bytes; }
评论
4 楼
beihan007
2010-11-27
楼主最近很活跃喔。
3 楼
caoyangx
2010-11-27
我是来看原作者出面指责楼主的。
2 楼
zheng12tian
2010-11-27
弄个demo上来看看
1 楼
pikenlike_123
2010-11-26
你最近发的帖子真多,这两天我都看过你三篇帖子了啊。
是不是转载过来的,如果转载过来的请注明哦;
是不是转载过来的,如果转载过来的请注明哦;
发表评论
-
少时诵诗书
2011-04-25 16:36 99811111111111111111111111111111 -
new struts2
2011-01-13 16:20 879new struts2 -
java获取本地机器所有IP和物理地址
2010-12-11 11:07 8271package com.cn; import java. ... -
用java随机画出两个圆,判断它们是否相交
2010-11-25 15:30 3880import java.awt.*; impor ... -
写一个较啰嗦;但是很好玩儿的java程序
2010-11-25 15:26 7215package com.cn; import java. ... -
java实现高性能的数据同步
2010-11-25 14:51 8804最近在做一个银 ... -
JAVA压缩文件或文件夹的代码
2010-11-25 09:31 2522package com.cn; import java. ... -
获取IP地址
2010-11-25 09:15 876package com.tianren.service; i ... -
java打印程序设计
2010-11-22 10:05 9151 前言 在我们的实际 ... -
各种排序算法java实现
2010-11-22 09:58 808package org.rut.util.algorithm. ... -
java中调用ORACLE存储过程
2010-11-22 09:47 1048一:无返回值的存储过程 存储过程为: CREATE OR ... -
增强Eclipse ,MyEclipse的代码提示功能(图文教程)V1.1
2010-11-19 09:27 815此文档需要下载![/size] -
myeclipse8.0下载 汉化 破解方法 及 svn配置
2010-11-19 09:21 1199今天到网上弄了一个MyEclipse8.0 的呵呵。包括可以汉 ... -
MyEclipse 8.0正式版发布+高速下载以及安装+注册码+破解+升级
2010-11-19 09:17 3702MyEclipse 8.0正式版发布+高速下载以及安装+注册码 ... -
java时间操作函数汇总
2010-11-18 13:15 805经常用到时间日期类,所以就将常用的日期方法和属性都归纳总结如下 ... -
Java文件下载的几种方式
2010-11-18 12:58 854public HttpServletResponse down ... -
Java发送邮件(包括文本,网页,附件)
2010-11-17 10:47 1787commons-email-1.2.jar: 这是Apache ... -
java.lang.String中的trim()方法的详细使用介绍
2010-11-15 11:31 5395String.Trim()方法到底为我们做了什么,仅仅是去除字 ...
相关推荐
在WEB应用中使用基于数字证书的登录验证
计算机和网络技术的发展将人类带入信息化社会,随之而来的是倍受关注的信息安全问题。...然后通过使用Windows和Java安全的相关内容实现数字签名在单机上的模拟来更加深刻地了解其过程。最后是对本论文的总结。
Java加密技术(六)——数字签名算法DSA Java加密技术(七)——非对称加密算法最高级ECC Java加密技术(八)——数字证书 Java加密技术(九)——初探SSL Java加密技术(十)——单向认证 Java加密技术(十一)——...
Java 数字签名、数字证书的相关实例。 关于数字签名:产生RSA密钥对(myKeyPair),得到RSA密钥对,产生Signature对象,对用私钥对信息(info)签名,用指定算法产生签名对象,用私钥初始化签名对象,将待签名的数据...
Java 数字签名、数字证书的相关实例。 关于数字签名:产生RSA密钥对(myKeyPair),得到RSA密钥对,产生Signature对象,对用私钥对信息(info)签名,用指定算法产生签名对象,用私钥初始化签名对象,将待签名的数据...
包里面的jar文件是我从IBM网站上下载...程序的功能就是,客户端输入一个字符串,并且用自己的私钥进行签名,服务器端用客户端的公钥进行验证签名和传送的舒服,判断该数据是否被篡改。代码写的不规范,只是实现了功能。
论述了工作流引擎在企业资源规划(ERP)系统中的主要功能后,为了能解决工作流运行过程中可能遇到的网络安全、法律效力等问题,提出了结合数字证书与数字签名技术的B/S解决方案,并结合Java授权与认证服务(Java ...
带有数字签名的加密网络应用3189.7 小结319第三部分综合应用篇第10章终极武器—数字证书33210.1 数字证书详解33210.2 模型分析33510.3 证书管理33710.4 证书使用35110.5 应用举例36010.6 小结360第11章终极装备—...
带有数字签名的加密网络应用318 9.7 小结319 第三部分综合应用篇 第10章终极武器—数字证书332 10.1 数字证书详解332 10.2 模型分析335 10.3 证书管理337 10.4 证书使用351 10.5 应用举例360 10.6 小结360 第11章...
# 第五章和第六章介绍基于摘要和签名技术的数字证书。这是Java安全中确定身份的主要技术。其中第五章介绍了数字证书的创建、签发、验证和维护等,第六章介绍了多个证书组成的证书链(CertPath)的创建和验证。 # 第...
10-支付安全-数字证书.mp4 11-支付安全-https中的数字证书.mp4 14-创建案例项目-介绍.mp4 19-创建案例项目-集成MyBatis-Plus.mp4 20-创建案例项目-集成MyBatis-Plus的补充.mp4 22-初识Vue-初始化Vue项目.mp4 24-创建...
9.5 数字签名 9.5.1 消息摘要 9.5.2 消息签名 9.5.3 X.509证书格式 9.5.4 校验签名 9.5.5 认证问题 9.5.6 证书签名 9.5.7 证书请求 9.6 代码签名 9.6.1 JAR文件签名 9.6.2 软件开发者证书 9.7 加密 9.7.1 对称密码 ...
09-支付安全-数字签名.mp4 10-支付安全-数字证书.mp4 11-支付安全-https中的数字证书.mp4 12-支付安全-总结.mp4 13-支付安全-微信支付中的证书密钥和签名.mp4 14-创建案例项目-介绍.mp4 15-创建案例项目-创建...
它使用户能够管理自己的公钥/私钥对及相关证书,用于(通过数字签名)自我认证(用户向别的用户/服务认证自己)或数据完整性以及认证服务。它还允许用户储存他们的通信对等者的公钥(以证书形式)。
网上交易加密连接、网上银行身份验证、各种信用卡使用的数字证书、智能移动电话和存储卡的验证功能芯片等,大多数使用RSA技术。 当今公钥加密更广泛应用于互联网身份认证,本课题将公钥加密算法RSA应用于小型文件...
数字签名:采用加密技术来实现对签名者身份的认证和数据的完整性。简单的说就是你签字的文件别人知道是你签的,并且知道这个文件是否被修改过。 我们可以通过 数字签名 applet的jar文档来实现控制的策略。
常见的一些安全算法,如数字摘要、对称加密、非对称加密、数字签名、数字证书等。 如何采用摘要认证方式防止信息篡改、通过数字签名验证通信双方的合法性,以及通过HTTPS协议保障通信过程中数据不被第三方监听和...
- 下载URL设置有效期(限制时间或限制下载次数),过期后禁止访问 【 *数字签名* *消息认证码* *Hash Extension Length Attack* *Hash算法与HMAC算法的区别与联系* 】 - 提供静态文件的散列值下载,供下载文件完成...