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());

}

}

}

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();

}

}

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();

}

}

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");

}

}

}

5 使用Java程序将已签名的数字证书导入密钥库

首先读取CA的证书mytest.cer和用户收到的签名后的证书lf_signed.cer(由CA私钥签发),使用这两个证书组成证书链,然后从用户的密钥库读取私钥,最后执行KeyStore对象的setKeyEntry( )方法将私钥和证书一起写入密钥库,并使用store( )方法保存为文件即可。

import java.io.*;

import java.security.*;

import java.security.cert.*;

/*

* CA证书,已经签名的用户数字证书,用户密钥库名和密码以及相应证书的私钥名称,新生成的证书名称和密钥库名以及密码

*/

public class ImportCert{

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

//参数

String cacert="new.cer";

String lfcert="hqy.cer";

String lfstore="mykeystore";

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

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

//CA的证书

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

FileInputStream in1=new FileInputStream(cacert);

java.security.cert.Certificate cac=cf.generateCertificate(in1);

in1.close();

//用户的签名证书

FileInputStream in2=new FileInputStream(lfcert);

java.security.cert.Certificate lfc=cf.generateCertificate(in2);

in2.close();

//证书链

java.security.cert.Certificate[] cchain={lfc,cac};

//用户的密钥库

FileInputStream in3=new FileInputStream(lfstore);

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

ks.load(in3,lfstorepass);

PrivateKey prk=(PrivateKey)ks.getKey("new",lfkeypass);

//导入证书

ks.setKeyEntry("new_signed",prk,lfstorepass,cchain);

//保存密钥库

FileOutputStream out4=new FileOutputStream("nostore");

ks.store(out4,"080302".toCharArray());

out4.close();

}

}

转载于:https://www.cnblogs.com/suncoolcat/p/3398017.html

Java程序实现密钥库的维护相关推荐

  1. android studio秘钥库文件不存在,获得SHA1以及错误java.lang.Exception: 密钥库文件不存在: keystore...

    一:在Android studio中Terminal中切换到相应的盘符下,我的jks文件在D盘,输入keytool -v -list -keystore myfirst.jks   "myf ...

  2. 百度地图调用 keytool 错误:java.lang.Exception: 密钥库文件不存在、getLocType 167(4.9E-324)错误

    百度地图调用中遇到的坑 1. keytool 错误:java.lang.Exception: 密钥库文件不存在 2.getLocType:167 错误 获取坐标(4.9E-324) 3.getAddr ...

  3. mac下keytool 错误: java.lang.Exception: 密钥库文件不存在

    最近项目需要上线, 其中一个项目 用旧项目改成新的, 在生打包的时候, 我忽略了一个问题, 导致项目还是之前的应用,找了一下发现没有改module里的applicationId没有改, 一定一定要改 ...

  4. keytool 错误: java.lang.Exception: 密钥库文件不存在: keystore

    keytool 错误: java.lang.Exception: 密钥库文件不存在: keystore 通过Android Studio编译器获取SHA1 第一步.打开Android Studio的T ...

  5. keytool 错误: java.lang.Exception: 密钥库文件存在, 但为空: E:\xxx\xxx\.jks

    android的报错提示:keytool 错误: java.lang.Exception: 密钥库文件存在, 但为空: E:\example\demo\arsdk.jks 错误在哪,可以发现: E:\ ...

  6. winscp用密钥连接linux服务器和java程序用密钥连接服务器

    一.winscp用密钥连接linux服务器 第一步,生成ssh公钥密钥对: 使用Tera Term登录进服务器(这时候先用用户名和密码登录), #ssh-keygen -t rsa cd进入进入/ro ...

  7. java keystore pkcs12_Java密钥库的不同类型 -- PKCS12

    Different types of keystore in Java -- PKCS12 Java密钥库的不同类型 -- PKCS12 JKCS12 is an active file format ...

  8. jarsigner 错误: java.lang.RuntimeException: 密钥库加载: Invalid keystore format

    魅族认领应用时需要将指定的无签名apk签上自己应用的签名,我的签名是用studio生成的,在使用魅族提供的jarsigner方法时输入密码后就提示invalid keystore format. 附上 ...

  9. 掌握基本的Java程序开发过程 题库 1213

    掌握基本的Java程序开发过程 01 02 03

最新文章

  1. Sqlite数据库相关
  2. Ajax服务器响应简单实例
  3. 用注解还是用xml 配置?
  4. laravel+vue开发环境搭建
  5. [JS] Invalid Date
  6. Memcached 集群架构方面的问题
  7. 支持向量机SVM原理(参数解读和python脚本)
  8. 基于STM32F103完成对SD卡的数据读取操作
  9. 13个不错的jquery图片放大器效果
  10. 用python预测你的小孩的身高_孩子身高预测
  11. 关于七牛云上传图片的总结
  12. 模拟10位QQ账号的生成
  13. Java课程设计-基于Java Swing的学生信息管理系统-版本二
  14. Flutter 气泡效果 centerSlice 实现点9图
  15. 计算机动画制作有什么软件,电脑绘画和动画制作,要用什么软件?
  16. CNN卷积神经网络十二生肖识别项目(一)数据下载篇
  17. python怎么画长方形_Python如何绘制长方形?
  18. ArcGIS教程:TIFF图像拼接及几何校正
  19. 才貌双全,既是学霸,又是运动达人,这个博士小姐姐太飒了
  20. python 爬取财经新闻股票_70行python代码爬取新浪财经中股票历史成交明细

热门文章

  1. 老板为什么越来越难熬?
  2. React的静态类型检查
  3. 如何配置 Linux ipv6 6RD隧道
  4. 小心编译器的隐式声明
  5. Html 点透镂空遮罩,swift 实现遮罩部分区域“挖洞”效果和点击事件穿透
  6. dbcc_name 空的_DBCC INPUTBUFFER和sys.dm_exec_input_buffer DMF概述
  7. Camera2点击对焦实现
  8. 51Nod 1289 大鱼吃小鱼 栈的简单模拟
  9. java之IO整理(下)
  10. 最小公倍数最大公约数