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]+",");
}
}
} java
關注獲取視頻 spring springboot springcloud redis dubbo
redis