java安全架构____java 秘钥对生成
2017-02-25 18:49
477 查看
import java.io.FileOutputStream; import java.io.OutputStreamWriter; import java.security.KeyPair; import java.security.KeyPairGenerator; import java.security.PrivateKey; import java.security.PublicKey; import java.security.SecureRandom; import java.util.UUID; import sun.misc.BASE64Decoder; import sun.misc.BASE64Encoder; // 生成一对文件 publicKey.key 和 privateKey.key , // 公钥要用户发送 ( 文件 , 网络等方法 ) 给其它用户 , 私钥保存在本地 public class PiPuKeyPairs { public static void main(String[] args) { //getGeneralKeyPairs(); String seed=UUID.randomUUID().toString(); getSeSeedKeyPairs(seed); } public static boolean getGeneralKeyPairs() { try { // 初始化签名秘钥 KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("DSA"); keyPairGenerator.initialize(512); // 初始化公私秘钥对 KeyPair keyPair = keyPairGenerator.genKeyPair(); // 获取公钥 PublicKey publicKey = keyPair.getPublic(); // 获取私钥 PrivateKey privateKey = keyPair.getPrivate(); // 生产公钥文件UTF-8格式字符串 OutputStreamWriter outputStreamWriter_pub = new OutputStreamWriter(new FileOutputStream("publicKey.key"), "UTF-8"); outputStreamWriter_pub.write(encodeBase64(publicKey.toString())); outputStreamWriter_pub.close(); System.out.println("公钥:\n" + encodeBase64(publicKey.toString())); // 生产公钥文件UTF-8格式字符串 OutputStreamWriter outputStreamWriter_pri = new OutputStreamWriter(new FileOutputStream("privateKey.key"), "UTF-8"); outputStreamWriter_pri.write(encodeBase64(privateKey.toString())); outputStreamWriter_pri.close(); System.out.println("私钥:\n" + encodeBase64(privateKey.toString())); //生成 System.out.println("秘钥对生成完成....."); return true; } catch (Exception e) { e.printStackTrace(); return false; } } /** * 自定义种子生成策略 * @param seed * @return */ public static boolean getSeSeedKeyPairs(String seed) { try { // 初始化签名秘钥 KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("DSA"); SecureRandom secureRandom=new SecureRandom(); secureRandom.setSeed(seed.getBytes()); keyPairGenerator.initialize(512,secureRandom); // 初始化公私秘钥对 KeyPair keyPair = keyPairGenerator.genKeyPair(); // 获取公钥 PublicKey publicKey = keyPair.getPublic(); // 获取私钥 PrivateKey privateKey = keyPair.getPrivate(); // 生产公钥文件UTF-8格式字符串 OutputStreamWriter outputStreamWriter_pub = new OutputStreamWriter(new FileOutputStream("publicKey2.key"), "UTF-8"); outputStreamWriter_pub.write(encodeBase64(publicKey.toString())); outputStreamWriter_pub.close(); System.out.println("公钥:\n" + encodeBase64(publicKey.toString())); // 生产公钥文件UTF-8格式字符串 OutputStreamWriter outputStreamWriter_pri = new OutputStreamWriter(new FileOutputStream("privateKey2.key"), "UTF-8"); outputStreamWriter_pri.write(encodeBase64(privateKey.toString())); outputStreamWriter_pri.close(); System.out.println("\n私钥:\n" + encodeBase64(privateKey.toString())); //生成 System.out.println("\n 秘钥对生成完成....."); return true; } catch (Exception e) { e.printStackTrace(); return false; } } // 对字符密码加密 public static String encodeBase64(String str) throws Exception { // 1.将传递进来的字符串密码 转换为字节数组 放到base64加密工具里 生产出一个加了密的字符串 String base64Str = new BASE64Encoder().encode(str.getBytes("UTF-8")); return base64Str; } // 对密文字符串解密 public static String decodeBase64(String base64Str) throws Exception { // 根据加了密的字符串 使用base64的解密工具里 获取原来的明文字符串密码 byte[] bytes = new BASE64Decoder().decodeBuffer(base64Str); String generalStr = new String(bytes, "UTF-8"); return generalStr; } }
//运行结果
//文件
//文件
相关文章推荐
- Java安全架构____KeyGenerator(对称)秘钥生成工具详解
- java安全架构____对称加密和非对称加密区别(对称秘钥,非对称秘钥)
- java安全架构____openssl生成数字证书
- java安全架构____Hmac秘钥加密自己的摘要数据
- java安全架构____java 秘钥对原理
- java安全架构____数字证书生成
- java安全架构____java MD5加密
- java安全架构____java Base64加密
- java安全架构____java DSA加密解密
- java安全架构____DES加密原理
- java安全架构____DES加密解密
- 【Java探索道路安全系列:Java可扩展的安全架构】一间:Java可扩展的安全体系结构开始
- iOS安全之RSA加密/生成公钥、秘钥 pem文件
- java安全(五)带秘钥的消息摘要算法——数字签名
- 【Java 安全技术探索之路系列:J2SE安全架构】之六:安全管理工具
- java 线程-生命周期-锁-阻塞-生成消费模式-安全容器
- 【Java安全技术探索之路系列:Java可扩展安全架构】之六:JCE(二):JCE类和接口
- Java2 安全架构
- 【Java安全技术探索之路系列:Java可扩展安全架构】之十五:JAAS(二):JAAS类和接口
- 【Java安全技术探索之路系列:Java可扩展安全架构】之二十一:SASL(二):SASL类和接口.md