前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >java加密解密与数字证书的操作

java加密解密与数字证书的操作

作者头像
BUG弄潮儿
发布2022-06-30 15:20:24
3340
发布2022-06-30 15:20:24
举报
文章被收录于专栏:JAVA乐园

1 Java程序实现密钥库的维护

1.1 Java程序列出密钥库所有条目

import java.util.*;

import java.io.*;

import java.security.*;

public class ShowAlias{

public static void main(String args[ ]) throws Exception{

String pass="080302";

String name=".keystore";

FileInputStream in=new FileInputStream(name);

KeyStore ks=KeyStore.getInstance("JKS");

ks.load(in,pass.toCharArray());

Enumeratione=ks.aliases( );

while( e.hasMoreElements()) {

System.out.println(e.nextElement());

}

}

}

1.2 Java程序修改密钥库口令

import java.io.*;

import java.security.*;

public class SetStorePass{

public static void main(String args[ ]) throws Exception{

char[ ] oldpass="080302".toCharArray();

char[ ] newpass="123456".toCharArray();

String name=".keystore";

FileInputStream in=new FileInputStream(name);

KeyStore ks=KeyStore.getInstance("JKS");

ks.load(in,oldpass);

in.close();

FileOutputStream output=new FileOutputStream(name);

ks.store(output,newpass);

output.close();

}

}

1.3 Java程序修改密钥库条目的口令及添加条目

package test;

import java.io.*;

import java.security.*;

import java.security.cert.Certificate;

public class SetKeyPass{

public static void main(String args[ ]) throws Exception{

//读取相关参数

String name=".keystore";

String alias="mykey";

char[ ] storepass="123456".toCharArray();

char[ ] oldkeypass="080302".toCharArray();

char[ ] newkeypass="123456".toCharArray();

//获取密钥库.keystore的KeyStore对象,并加载密钥库

FileInputStream in=new FileInputStream(name);

KeyStore ks=KeyStore.getInstance("JKS");

ks.load(in,storepass);

//获取别名对应的条目的证书链

Certificate[ ] cchain=ks.getCertificateChain(alias);

//读取别名对应的条目的私钥

PrivateKey pk=(PrivateKey)ks.getKey(alias,oldkeypass);

//向密钥库中添加新的条目

ks.setKeyEntry(alias,pk,newkeypass,cchain);

in.close();

//将KeyStore对象内容写入新文件

FileOutputStream output=new FileOutputStream("333");

ks.store(output,storepass);

output.close();

}

}

1.4 Java程序检验别名及删除条目

package test;

import java.io.*;

import java.security.*;

public class DeleteAlias{

public static void main(String args[ ]) throws Exception{

String pass = "123456";

String name = ".keystore";

String alias = "mykey";

FileInputStream in=new FileInputStream(name);

KeyStore ks=KeyStore.getInstance("JKS");

ks.load(in,pass.toCharArray());

if (ks.containsAlias(alias)){

ks.deleteEntry(alias);

FileOutputStream output=new FileOutputStream(name);

ks.store(output,pass.toCharArray());

System.out.println("Alias "+alias+" deleted");

}else{

System.out.println("Alias not exist");

}

}

}

2 Java程序读取证书和显示证书指定信息

2.1 Java程序从证书文件读取证书

import java.io.*;

import java.security.cert.*;

public class PrintCert{

public static void main(String args[ ]) throws Exception{

CertificateFactory cf=CertificateFactory.getInstance("X.509");

FileInputStream in=new FileInputStream("my.cer");

Certificate c=cf.generateCertificate(in);

in.close();

String s=c.toString( );

// 显示证书

FileOutputStream fout=new FileOutputStream("tmp.txt");

BufferedWriter out= new BufferedWriter(new OutputStreamWriter(fout));

out.write(s,0,s.length( ));

out.close();

}

}

2.2 Java程序从密钥库直接读取证书

import java.io.*;

import java.security.*;

import java.security.cert.Certificate;

public class PrintCert2{

public static void main(String args[ ]) throws Exception{

String pass="080302";

String alias="mykey";

String name=".keystore";

FileInputStream in=new FileInputStream(name);

KeyStore ks=KeyStore.getInstance("JKS");

ks.load(in,pass.toCharArray());

Certificate c=ks.getCertificate(alias);

in.close();

System.out.println(c.toString( ));

}

}

2.3 Java程序显示证书指定信息(全名/公钥/签名等)

import java.io.*;

import java.security.*;

import java.security.cert.*;

import java.math.*;

public class ShowCertInfo{

public static void main(String args[ ]) throws Exception{

CertificateFactory cf=CertificateFactory.getInstance("X.509");

FileInputStream in=new FileInputStream("my.cer");

java.security.cert.Certificate c=cf.generateCertificate(in);

in.close();

X509Certificate t=(X509Certificate) c;

System.out.println("版本号 "+t.getVersion());

System.out.println("序列号 "+t.getSerialNumber().toString(16));

System.out.println("全名 "+t.getSubjectDN());

System.out.println("签发者全名n"+t.getIssuerDN());

System.out.println("有效期起始日 "+t.getNotBefore());

System.out.println("有效期截至日 "+t.getNotAfter());

System.out.println("签名算法 "+t.getSigAlgName());

byte[] sig=t.getSignature();

System.out.println("签名n"+new BigInteger(sig).toString(16));

PublicKey pk=t.getPublicKey();

byte[ ] pkenc=pk.getEncoded();

System.out.println("公钥");

for(int i=0;i< div="">

System.out.print(pkenc[i]+",");

}

}

}

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-04-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 BUG弄潮儿 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档