- 浏览: 199226 次
- 性别:
- 来自: 广州
文章分类
- 全部博客 (101)
- 职业 (4)
- 生活 (3)
- 场景应用 (6)
- flex (14)
- java (31)
- php (2)
- python (2)
- hadoop (6)
- 项目管理 (1)
- 工作流 (4)
- 手机web应用 (3)
- 算法 (4)
- 小技巧 (1)
- 数据库 (2)
- sphinx (1)
- web综合 (15)
- spring (5)
- 设计 (9)
- javascript (3)
- linux (2)
- 报表 (2)
- delphi (1)
- ejb (1)
- 架构 (3)
- uml (3)
- lucene (2)
- BI (1)
- 多线程 (1)
- 地图 (1)
- gis (1)
- 网络基础 (1)
- spark (2)
- 分布式 (3)
- ext (1)
- android (3)
- arduino (1)
- 协同办公 (2)
- OA流程 (2)
- 畅想 (1)
- ios (3)
- swift (1)
- webkit (1)
- c (1)
- 浏览器 (1)
- html5 (2)
- rtmp (1)
- soket (1)
- AI (2)
- tensorflow (1)
- ignite (1)
- react (4)
- 新空间 (2)
- 闲话 (3)
- docker (1)
- kubernetes (1)
最新评论
-
wenzhiyinghen:
...
spark 学习 -
zlbdexiaohao:
flex 写的时钟 -
minn84:
luoguohong88 写道你上传的那个openi.zip ...
openi1.3 eclipse 整合调试 -
luoguohong88:
你上传的那个openi.zip (5.5 MB)有问题 能再上 ...
openi1.3 eclipse 整合调试 -
minn84:
demo的思路很简单,主要是两点:1.hadoop负责处理数据 ...
hadoop+lucene+web 综合小demo
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PushbackReader;
import java.security.KeyStore;
import java.security.Principal;
import java.security.PrivateKey;
import java.security.cert.CertificateFactory;
import java.security.cert.X509Certificate;
import java.util.Arrays;
import sun.security.x509.CertificateIssuerName;
import sun.security.x509.X500Name;
import sun.security.x509.X509CertImpl;
import sun.security.x509.X509CertInfo;
public class CertificateSigner {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String ksname=null;
String alias=null;
String inname=null;
String outname=null;
for(int i=0;i<args.length;i++)
{
if(args[i].equals("-keystore"))
ksname=args[++i];
else if(args[i].equals("-alias"))
alias=args[++i];
else if(args[i].equals("-infile"))
inname=args[++i];
else if(args[i].equals("-outfile"))
outname=args[++i];
else usage();
}
if(ksname==null||alias==null||inname==null||outname==null||outname==null)usage();
try
{
PushbackReader console=new PushbackReader(new InputStreamReader(System.in));
KeyStore store=KeyStore.getInstance("JKS","SUN");
InputStream in=new FileInputStream(ksname);
System.out.print("Keystore password:");
System.out.flush();
char[] password=readPassword(console);
store.load(in,password);
Arrays.fill(password,' ');
in.close();
System.out.println("Key password for "+alias+": ");
System.out.flush();
char[] keyPassword=readPassword(console);
PrivateKey issuerPrivateKey=(PrivateKey) store.getKey(alias, keyPassword);
Arrays.fill(keyPassword, ' ');
if(issuerPrivateKey==null)error("No such private key");
in=new FileInputStream(inname);
CertificateFactory factory=CertificateFactory.getInstance("X.509");
X509Certificate inCert=(X509Certificate) factory.generateCertificate(in);
in.close();
byte[] inCertBytes=inCert.getTBSCertificate();
X509Certificate issuerCert=(X509Certificate) store.getCertificate(alias);
Principal issuer=issuerCert.getSubjectDN();
String issuerSigAlg=issuerCert.getSigAlgName();
FileOutputStream out=new FileOutputStream(outname);
X509CertInfo info=new X509CertInfo(inCertBytes);
info.set(X509CertInfo.ISSUER, new CertificateIssuerName((X500Name)issuer));
X509CertImpl outCert=new X509CertImpl(info);
outCert.sign(issuerPrivateKey, issuerSigAlg);
outCert.derEncode(out);
out.close();
}catch(Exception e)
{
e.printStackTrace();
}
}
private static char[] readPassword(PushbackReader in)throws IOException
{
final int MAX_PASSWORD_LENGTH=100;
int length=0;
int flag=0;
char[] buffer=new char[MAX_PASSWORD_LENGTH];
while(true)
{
int ch=in.read();
if(ch=='\r'||ch=='\n'||ch==-1||length==MAX_PASSWORD_LENGTH)
{
if(ch=='\r')
{
ch=in.read();
if(ch!='\n'&&ch!=-1)
{
in.unread(ch);
}
if(length==0&&flag==0)
{
length=1;
}
char[] password=new char[length];
System.arraycopy(buffer, 0, password, 0, length);
if(length==0&&flag==0)
{
length=0;
flag=1;
}
//Arrays.fill(buffer,' ');
return password;
}else
{
buffer[length]=(char) ch;
length++;
}
}
}
}
private static void error(String message)
{
System.out.println(message);
System.exit(1);
}
private static void usage()
{
System.out.println("Usage:java CertificateSigner"+" -keystore keystore -alias issuerKeyAlias"+" -infile inputFile -outfile outputFile");
System.exit(1);
}
}
证书签名
1)javac *.java
创建一个密钥库
2)keytool -genkey -keystore czm.store -alias czm
导出证书文件
3)keytool -export -keystore czm.store -alias czm -file czm.cert
打印证书
4)keytool -printcert -file czm.cert
把证书输入密钥库中
5)keytool -import -keystore czm1.store alias czm1 -file czm.cert
把要签名的文档加入到jar中
6)jar cvf document.jar document.txt
将签名添加到文件中
7)jarsigner -keystore czm.store document.jar czm
客户端校验
8)jarsigner -verify -keystore czm1.store document.jar
签名匹配将会打印:java verified
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PushbackReader;
import java.security.KeyStore;
import java.security.Principal;
import java.security.PrivateKey;
import java.security.cert.CertificateFactory;
import java.security.cert.X509Certificate;
import java.util.Arrays;
import sun.security.x509.CertificateIssuerName;
import sun.security.x509.X500Name;
import sun.security.x509.X509CertImpl;
import sun.security.x509.X509CertInfo;
public class CertificateSigner {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String ksname=null;
String alias=null;
String inname=null;
String outname=null;
for(int i=0;i<args.length;i++)
{
if(args[i].equals("-keystore"))
ksname=args[++i];
else if(args[i].equals("-alias"))
alias=args[++i];
else if(args[i].equals("-infile"))
inname=args[++i];
else if(args[i].equals("-outfile"))
outname=args[++i];
else usage();
}
if(ksname==null||alias==null||inname==null||outname==null||outname==null)usage();
try
{
PushbackReader console=new PushbackReader(new InputStreamReader(System.in));
KeyStore store=KeyStore.getInstance("JKS","SUN");
InputStream in=new FileInputStream(ksname);
System.out.print("Keystore password:");
System.out.flush();
char[] password=readPassword(console);
store.load(in,password);
Arrays.fill(password,' ');
in.close();
System.out.println("Key password for "+alias+": ");
System.out.flush();
char[] keyPassword=readPassword(console);
PrivateKey issuerPrivateKey=(PrivateKey) store.getKey(alias, keyPassword);
Arrays.fill(keyPassword, ' ');
if(issuerPrivateKey==null)error("No such private key");
in=new FileInputStream(inname);
CertificateFactory factory=CertificateFactory.getInstance("X.509");
X509Certificate inCert=(X509Certificate) factory.generateCertificate(in);
in.close();
byte[] inCertBytes=inCert.getTBSCertificate();
X509Certificate issuerCert=(X509Certificate) store.getCertificate(alias);
Principal issuer=issuerCert.getSubjectDN();
String issuerSigAlg=issuerCert.getSigAlgName();
FileOutputStream out=new FileOutputStream(outname);
X509CertInfo info=new X509CertInfo(inCertBytes);
info.set(X509CertInfo.ISSUER, new CertificateIssuerName((X500Name)issuer));
X509CertImpl outCert=new X509CertImpl(info);
outCert.sign(issuerPrivateKey, issuerSigAlg);
outCert.derEncode(out);
out.close();
}catch(Exception e)
{
e.printStackTrace();
}
}
private static char[] readPassword(PushbackReader in)throws IOException
{
final int MAX_PASSWORD_LENGTH=100;
int length=0;
int flag=0;
char[] buffer=new char[MAX_PASSWORD_LENGTH];
while(true)
{
int ch=in.read();
if(ch=='\r'||ch=='\n'||ch==-1||length==MAX_PASSWORD_LENGTH)
{
if(ch=='\r')
{
ch=in.read();
if(ch!='\n'&&ch!=-1)
{
in.unread(ch);
}
if(length==0&&flag==0)
{
length=1;
}
char[] password=new char[length];
System.arraycopy(buffer, 0, password, 0, length);
if(length==0&&flag==0)
{
length=0;
flag=1;
}
//Arrays.fill(buffer,' ');
return password;
}else
{
buffer[length]=(char) ch;
length++;
}
}
}
}
private static void error(String message)
{
System.out.println(message);
System.exit(1);
}
private static void usage()
{
System.out.println("Usage:java CertificateSigner"+" -keystore keystore -alias issuerKeyAlias"+" -infile inputFile -outfile outputFile");
System.exit(1);
}
}
证书签名
1)javac *.java
创建一个密钥库
2)keytool -genkey -keystore czm.store -alias czm
导出证书文件
3)keytool -export -keystore czm.store -alias czm -file czm.cert
打印证书
4)keytool -printcert -file czm.cert
把证书输入密钥库中
5)keytool -import -keystore czm1.store alias czm1 -file czm.cert
把要签名的文档加入到jar中
6)jar cvf document.jar document.txt
将签名添加到文件中
7)jarsigner -keystore czm.store document.jar czm
客户端校验
8)jarsigner -verify -keystore czm1.store document.jar
签名匹配将会打印:java verified
发表评论
-
多语言版基础管理系统展示[es6版]-入门配置篇
2018-10-26 07:17 560新增一篇入门配置文档 原文地址: http://www.i8 ... -
多语言版基础管理系统展示[es6版] -流程配置效果
2017-12-17 19:42 750终于找到一个可以较好展示工作流程配置的 ... -
多语言版基础管理系统展示[es6版]-简单整合spring+tensorflow+ignite+hadoop
2017-08-05 18:14 8581.整合基于[多语言版基础管理系统展示[es6版] ] ... -
多语言版基础管理系统展示[es6版]-简单整合tensorflow
2017-05-03 19:48 1048在大数据和AI渐渐兴起的时候,这是一个关于大 ... -
基于html5的websocket和rtmp协议的java socket服务器
2016-12-07 07:20 1106现代企事业单位中,会涉及到数据推送和获取服 ... -
多语言版基础管理系统展示[flash版]-hadoop+spark+spring简单整合
2016-06-18 21:36 4320本demo基于多语言版基础管理系统展示[fl ... -
ios简单的增删查例子
2015-02-23 16:08 883本例子分为两 ... -
spark 学习
2013-05-18 00:13 19232spark,又一个传说中的分布式实现,详情:ht ... -
基于rtmp协议的java多线程服务器
2013-03-31 21:34 3893打算设计这个半开源服务的计划已经有很长时间了,大 ... -
矩阵算法实现修改
2013-03-23 00:10 1049前段时间因为项目需要,需要实现一个据说是某高 ... -
hadoop+lucene+web 综合小demo
2013-03-02 01:28 13755很长一段时间没有关注hadoop,突然间有兴致,于是动手又 ... -
ejb3.x 简单小 demo
2012-02-21 21:07 1204本demo适合有一定编程经验的自学者 ,简单易懂,涉及数据 ... -
java综合
2012-02-11 22:00 1464以下自定义的简单类中,分析涉及的基础知识 / ... -
java nio应用 aes字符串加密与解密
2010-08-18 22:36 1995import java.io.IOException; imp ... -
java excel内容转换为键/值对基本通用方法与数据库导入
2010-06-01 23:28 1726有时候我们需要从execel中导入大量的数据,编程过程中就遇到 ... -
简单servlet socket 整合
2010-05-05 21:52 4389package filter; import java.io ... -
java写的简单生成sql语句的工具方法
2010-04-20 23:02 3469jdbc编程中,最麻烦的是拼sql语句,尤其是字段太多的时候, ... -
基于rtmp协议用java nio写小型游戏服务器的总结3
2010-03-05 20:59 2178在flex使用rtmp协议进行连接的时候,有个握手的过程,详情 ... -
基于rtmp协议用java nio写小型游戏服务器的总结2
2010-03-04 21:41 2306今天介绍一下学习rtmp的过程,首先当然是baidu和goog ... -
基于rtmp协议用java nio写小型游戏服务器的总结1
2010-03-03 22:55 2525前一阵子,进了一家公司,工作的内容是写基于rtmp协议的jav ...
相关推荐
Java签名证书信息查看工具是Java开发中用于检查和管理数字证书及密钥对的重要辅助工具。在Java应用程序或JAR文件发布时,为了确保代码安全和防止篡改,通常需要进行签名。Java签名证书信息查看工具就是在这个背景下...
在Java编程环境中,数字证书和数字签名是网络安全和数据完整性的重要组成部分。这些概念与Java的加密库和证书处理机制紧密相关。在这个项目中,我们似乎有一个包含Java实现数字证书和数字签名功能的源码模块。 首先...
### Java实现浏览器CA证书的签名和验证 #### 概述 随着互联网的普及和技术的发展,网络安全成为了维护用户信心和确保电子商务顺利进行的关键因素之一。在众多保障网络安全的技术中,数字证书及其背后的公钥基础...
Java 数字签名与证书加载是Java安全编程中的关键部分,主要涉及到网络安全、数据完整性和身份验证。在Java中,数字签名通常使用X.509证书来存储公钥和私钥对,这些证书用于实现非对称加密算法,如RSA或DSA。本项目是...
下面将详细介绍这些算法以及它们在Java中的实现,以及如何进行数字签名和数字证书的验证。 1. **SM2算法**:SM2是一种基于椭圆曲线密码学(ECC)的公钥加密算法,用于非对称加密。它提供了密钥交换、签名和验证的...
总之,Java数字签名是基于公钥加密技术的一种安全机制,它通过证书确保公钥的可信性,并通过签名验证数据的完整性和发送者的身份。在实际开发中,理解并正确使用这些概念对于构建安全的网络应用至关重要。
java数字签名(签名生成,用证书验证签名)[汇编].pdf
4. 发行者名称(Issuer Name):证书发行者名,也就是给这个证书签名的机构名。 5. 有效期(Validity Period):证书有效时间范围。 6. 主题名称(Subject Name):被证书发行机构签名后的公钥拥有者或实体的名字,...
签名过程涉及到了Java的关键组件——Java Key Store(JKS),这是Java提供的一个安全存储密钥和证书的容器。 生成Android签名文件通常使用Java的`keytool`命令行工具,它包含在Java Development Kit (JDK) 中。以下...
Java 数字签名与数字证书是安全领域中的重要概念,它们在软件开发中起着至关重要的作用,尤其是在确保数据完整性和身份验证方面。本资源包含的Java代码工具包提供了生成数字签名和数字证书的源码,这有助于开发者...
Java 数字签名和数字证书是网络安全领域中的重要概念,它们在确保数据的完整性和来源的可信性方面扮演着关键角色。这份"Java 数字签名、数字证书生成源码"的压缩包提供了实现这些功能的代码示例,对于理解和应用Java...
在Java环境中实现PDF文件的电子签名,主要涉及到数字证书的生成、PDF处理库的使用以及签名的嵌入操作。下面将详细介绍这个过程。 首先,我们需要了解PFX(Personal Information Exchange)证书。PFX是一种包含了...
本文将深入探讨如何使用BouncyCastle库在Java中创建PKCS12格式的数字签名证书。 首先,理解BouncyCastle库。BouncyCastle是一个开放源代码的Java密码学API,提供了大量的加密算法、协议和实用工具类。对于处理PKCS#...
Java 数字签名是一种用于验证数据完整性和发送者身份的安全机制,它是基于公钥加密技术的。在Java中,数字签名通常使用Java Cryptography Architecture (JCA) 和 Java Cryptography Extension (JCE) 提供的API来实现...
在IT领域,数字签名和数字证书...综上所述,数字签名和数字证书是保障网络通信安全的关键技术,Java提供了丰富的API支持这些操作的实现。在实际应用中,理解并正确使用这些概念和工具对于构建安全的网络系统至关重要。
总结起来,Java Web Start签名是Java应用程序在网络环境中保证安全的关键技术,它涉及到代码签名、证书管理、验证过程和权限控制。在实际开发中,开发者需要确保所有分发的Java代码都经过正确的签名,以提供一个安全...
Java 数字签名与数字证书是网络安全领域中的重要概念,它们在确保数据的完整性和来源的可信性方面扮演着关键角色。在这个"Java 数字签名、数字证书生成源码"压缩包中,包含了实现这些功能的源代码,对于理解Java安全...