java生成秘钥key,并保存秘钥到文件中
来源:互联网 发布:浮生一日知乎 编辑:程序博客网 时间:2024/05/01 03:31
本例子采用的是Java的对称加密其中的一种方式(3DES),其他的加密方式也类似。生成一个key秘钥,发送方使用生成的key秘钥进行加密操作,然后把生成的key秘钥保存到文件中,提供给需要解密的一方使用key秘钥进行解密操作。(期间一定要保存key秘钥不被泄露)
package com.bobo.encryption.asymmetric;import java.io.BufferedReader;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.InputStream;import java.io.InputStreamReader;import java.io.OutputStream;import java.security.Key;import java.security.SecureRandom;import javax.crypto.Cipher;import javax.crypto.KeyGenerator;import javax.crypto.SecretKey;import javax.crypto.SecretKeyFactory;import javax.crypto.spec.DESedeKeySpec;import com.sun.org.apache.xerces.internal.impl.dv.util.HexBin;/** * 把生成的密钥key保存到文件 和 读取文件中保存的密钥key * (发送方进行加密,接收方进行解密) * @author win7 * */public class SaveKeyTest { //要加密的数据public static String bobo="http://blog.csdn.net/bobo0915";//加密后的密文数据public static byte[] result; //需要传输给 接收方 接收方进行解密public static void main(String[] args) {// TODO Auto-generated method stubsendSecret();receiveSecret();}/** * 模拟发送方 生成秘钥,并保存秘钥 * (通过其他方式把秘钥提供给接收方,邮件,网络,U盘...) */public static void sendSecret(){try {//1.初始化key秘钥KeyGenerator keyGenerator = KeyGenerator.getInstance("DESede");keyGenerator.init(new SecureRandom());SecretKey secretKey= keyGenerator.generateKey();//转换key秘钥DESedeKeySpec deSedeKeySpec=new DESedeKeySpec(secretKey.getEncoded());SecretKeyFactory secretKeyFactory=SecretKeyFactory.getInstance("DESede");Key key= secretKeyFactory.generateSecret(deSedeKeySpec);//2.对生成的密钥key进行编码保存String keyencode= HexBin.encode(key.getEncoded());//写入文件保存File file=new File("F:\\keyencode.txt");OutputStream outputStream=new FileOutputStream(file);outputStream.write(keyencode.getBytes());outputStream.close();System.out.println(keyencode+" -----> key保存成功");//3.进行加密Cipher cipher=Cipher.getInstance("DESede/ECB/PKCS5Padding");cipher.init(Cipher.ENCRYPT_MODE, key);result= cipher.doFinal(bobo.getBytes());System.out.println("发送方进行加密:"+HexBin.encode(result));} catch (Exception e) {// TODO: handle exceptione.printStackTrace();}}/** * 模拟接收方 读取文件中的秘钥,进行加解密 */public static void receiveSecret(){try {//1.读取文件中的密钥File file = new File("F:\\keyencode.txt");InputStream inputStream = new FileInputStream(file);//文件内容的字节流InputStreamReader inputStreamReader= new InputStreamReader(inputStream); //得到文件的字符流BufferedReader bufferedReader=new BufferedReader(inputStreamReader); //放入读取缓冲区String readd="";StringBuffer stringBuffer=new StringBuffer();while ((readd=bufferedReader.readLine())!=null) {stringBuffer.append(readd);}inputStream.close();String keystr=stringBuffer.toString();System.out.println(keystr+" -----> key读取成功"); //读取出来的key是编码之后的 要进行转码 //2.通过读取到的key获取到key秘钥对象byte[] keybyte= HexBin.decode(keystr);DESedeKeySpec deSedeKeySpec=new DESedeKeySpec(keybyte);SecretKeyFactory secretKeyFactory=SecretKeyFactory.getInstance("DESede");Key key= secretKeyFactory.generateSecret(deSedeKeySpec); //获取到key秘钥//3.进行解密Cipher cipher=Cipher.getInstance("DESede/ECB/PKCS5Padding");cipher.init(Cipher.DECRYPT_MODE, key);result= cipher.doFinal(result);System.out.println("接收方进行解密:"+new String(result));} catch (Exception e) {// TODO: handle exceptione.printStackTrace();}}}
1 0
- java生成秘钥key,并保存秘钥到文件中
- java 中 excel生成并文件下载保存到本地
- java 中 excel生成并文件下载保存到本地(三)
- JSP生成随机数并保存到Excel文件中
- VB.NET 中生成Excel文件并弹出对话框保存
- [C/C++]随机生成信息,并保存到文件中
- VC中生成文字图片并保存到文件目录
- Android中byte数组生成文件并保存到手机
- java生成随机uuid并保存到文件
- 用java语言编译内存中java小程序,并将生成的.class文件保存在一个文件夹下。
- 在Java中读取并保存EXCEL文件中图片
- 在Java中读取并保存EXCEL文件中图片
- (2)java自带软件包javax.crypto的使用方法,保存generator中生成的key
- java 生成条码并保存为SVG
- Android中根据byte数组生成文件并保存到手机
- Android中根据byte数组生成文件并保存到手机
- java(优化四) 自动生成pdf文件并保存到本地
- 生成密钥,并保存
- 电气人员操作注意
- bootstrap进度条
- 之字打印树
- redis实现分布式锁
- mysql 源码安装
- java生成秘钥key,并保存秘钥到文件中
- CentOS 7 网络配置
- Java调用 新浪微博API 接口发微博,逐项讲解,绝对清晰
- 把电脑·系统属性·注册到(JS的名字,电话)给更改掉
- 第8讲-数值数据类型及表现-练习
- 16-01-14 TextView 属性
- ubuntu server设置时区和更新时间
- 文本转doc
- 1935 error