博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
利用java代码生成keyStore
阅读量:5087 次
发布时间:2019-06-13

本文共 2762 字,大约阅读时间需要 9 分钟。

在前面的章节中介绍了如何利用KeyTool工具生成keyStore:。

但是很多时候,在javaWeb项目中,比如给每个用户加上独特的数字签名,那么我们需要在创建用户的时候,给其生成独一无二的keystore。我现在主要的功能是,给每个用户下载pdf的时候加上数字签名。

下面说一下生成keystore的主要思想:借助keyTool中的生成keyStore的方法。主要利用sun.security.tools.keytool包文件来处理。

import java.io.FileOutputStream;import java.io.IOException;import java.security.GeneralSecurityException;import java.security.KeyStore;import java.security.KeyStoreException;import java.security.NoSuchAlgorithmException;import java.security.PrivateKey;import java.security.cert.CertificateException;import java.security.cert.X509Certificate;import java.util.Date;import sun.security.tools.keytool.CertAndKeyGen;import sun.security.x509.X500Name;/** * 主要用于创建keyStore文件,保存起来 *  * @author Xia * */public class KeyStoreCreate2 {    public static String filePath = "src/main/resources/pdf0090createEncrypt/new_KeyStore.keystore";    private static final int keysize = 1024;    private static final String commonName = "www.ctbri.com";    private static final String organizationalUnit = "IT";    private static final String organization = "test";    private static final String city = "beijing";    private static final String state = "beijing";    private static final String country = "beijing";    private static final long validity = 1096; // 3 years    private static final String alias = "tomcat";    private static final char[] keyPassword = "123456".toCharArray();        public static void main(String[] args) throws GeneralSecurityException {        try {                        KeyStore ks = KeyStore.getInstance("pkcs12");//            char[] password = "123456".toCharArray();            ks.load(null, null);                        CertAndKeyGen keypair = new CertAndKeyGen("RSA", "SHA1WithRSA", null);            X500Name x500Name = new X500Name(commonName, organizationalUnit, organization, city, state, country);            keypair.generate(keysize);                        PrivateKey privateKey = keypair.getPrivateKey();            X509Certificate[] chain = new X509Certificate[1];            chain[0] = keypair.getSelfCertificate(x500Name, new Date(), (long)validity*24*60*60);                        // store away the key store            FileOutputStream fos = new FileOutputStream(filePath);            ks.setKeyEntry(alias, privateKey, keyPassword, chain);            ks.store(fos, keyPassword);            fos.close();            System.out.println("create Success");        } catch (KeyStoreException e) {            e.printStackTrace();        } catch (NoSuchAlgorithmException e) {            e.printStackTrace();        } catch (CertificateException e) {            e.printStackTrace();        } catch (IOException e) {            e.printStackTrace();        }    }    }

 

转载于:https://www.cnblogs.com/xiaxj/p/8961131.html

你可能感兴趣的文章
数据分析处理库Pandas——概述
查看>>
博客园代码黑色高亮背景设置
查看>>
ignorable tips
查看>>
Eclipse 在ubuntu桌面显示快捷启动以及解决Eclipse 在ubuntu中点击菜单栏不起作用的原因....
查看>>
Python学习 Day18 Python 3层架构
查看>>
《暗时间》读书笔记(二)
查看>>
SQL如何将A,B,C替换为'A','B','C'
查看>>
2018-11-17站立会议内容
查看>>
jQuery中的height()、innerheight()、outerheight()的区别总结
查看>>
Garbage Disposal(模拟垃圾装垃圾口袋)
查看>>
多线程辅助类之CountDownLatch(三)
查看>>
typedef用法
查看>>
ehlib ado 删除选中记录 的方法
查看>>
日期 时间选择器(DatePicker和TimePicker)实现用户选择
查看>>
AdapterViewFlipper功能 自动播放的图片库
查看>>
leetcode 28 Implement Strstr()
查看>>
asp.net 下OnClientClick的妙用
查看>>
es6 - 模板
查看>>
python基础-正则表达式
查看>>
实现最大索引堆
查看>>