日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java项目的秘钥怎么保存_java生成秘钥key,并保存秘钥到文件中

發(fā)布時(shí)間:2023/12/14 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java项目的秘钥怎么保存_java生成秘钥key,并保存秘钥到文件中 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

本例子采用的是Java的對(duì)稱加密其中的一種方式(3DES),其他的加密方式也類似。生成一個(gè)key秘鑰,發(fā)送方使用生成的key秘鑰進(jìn)行加密操作,然后把生成的key秘鑰保存到文件中,提供給需要解密的一方使用key秘鑰進(jìn)行解密操作。(期間一定要保存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

* (發(fā)送方進(jìn)行加密,接收方進(jìn)行解密)

* @author win7

*

*/

public class SaveKeyTest {

//要加密的數(shù)據(jù)

public static String bobo="http://blog.csdn.net/bobo0915";

//加密后的密文數(shù)據(jù)

public static byte[] result; //需要傳輸給 接收方 接收方進(jìn)行解密

public static void main(String[] args) {

// TODO Auto-generated method stub

sendSecret();

receiveSecret();

}

/**

* 模擬發(fā)送方 生成秘鑰,并保存秘鑰

* (通過其他方式把秘鑰提供給接收方,郵件,網(wǎng)絡(luò),U盤...)

*/

public static void sendSecret(){

try {

//1.初始化key秘鑰

KeyGenerator keyGenerator = KeyGenerator.getInstance("DESede");

keyGenerator.init(new SecureRandom());

SecretKey secretKey= keyGenerator.generateKey();

//轉(zhuǎn)換key秘鑰

DESedeKeySpec deSedeKeySpec=new DESedeKeySpec(secretKey.getEncoded());

SecretKeyFactory secretKeyFactory=SecretKeyFactory.getInstance("DESede");

Key key= secretKeyFactory.generateSecret(deSedeKeySpec);

//2.對(duì)生成的密鑰key進(jìn)行編碼保存

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.進(jìn)行加密

Cipher cipher=Cipher.getInstance("DESede/ECB/PKCS5Padding");

cipher.init(Cipher.ENCRYPT_MODE, key);

result= cipher.doFinal(bobo.getBytes());

System.out.println("發(fā)送方進(jìn)行加密:"+HexBin.encode(result));

} catch (Exception e) {

// TODO: handle exception

e.printStackTrace();

}

}

/**

* 模擬接收方 讀取文件中的秘鑰,進(jìn)行加解密

*/

public static void receiveSecret(){

try {

//1.讀取文件中的密鑰

File file = new File("F:\\keyencode.txt");

InputStream inputStream = new FileInputStream(file);//文件內(nèi)容的字節(jié)流

InputStreamReader inputStreamReader= new InputStreamReader(inputStream); //得到文件的字符流

BufferedReader bufferedReader=new BufferedReader(inputStreamReader); //放入讀取緩沖區(qū)

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是編碼之后的 要進(jìn)行轉(zhuǎn)碼

//2.通過讀取到的key獲取到key秘鑰對(duì)象

byte[] keybyte= HexBin.decode(keystr);

DESedeKeySpec deSedeKeySpec=new DESedeKeySpec(keybyte);

SecretKeyFactory secretKeyFactory=SecretKeyFactory.getInstance("DESede");

Key key= secretKeyFactory.generateSecret(deSedeKeySpec); //獲取到key秘鑰

//3.進(jìn)行解密

Cipher cipher=Cipher.getInstance("DESede/ECB/PKCS5Padding");

cipher.init(Cipher.DECRYPT_MODE, key);

result= cipher.doFinal(result);

System.out.println("接收方進(jìn)行解密:"+new String(result));

} catch (Exception e) {

// TODO: handle exception

e.printStackTrace();

}

}

}

總結(jié)

以上是生活随笔為你收集整理的java项目的秘钥怎么保存_java生成秘钥key,并保存秘钥到文件中的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。