一個Java設置裝備擺設文件加密解密對象類分享。本站提示廣大學習愛好者:(一個Java設置裝備擺設文件加密解密對象類分享)文章只能為提供參考,不一定能成為您想要的結果。以下是一個Java設置裝備擺設文件加密解密對象類分享正文
罕見的如: 數據庫用戶暗碼,短信平台用戶暗碼,體系間校驗的固定暗碼等。
本對象類參考了 《Spring.3.x企業運用開辟實戰》一書 5.3節的完成。
完全代碼與正文信息以下:
package com.cncounter.util.comm;
import java.security.Key;
import java.security.SecureRandom;
import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;
public class DESUtils {
// 密鑰
private static Key key;
// KEY種子
private static String KEY_STR = "[email protected]";
// 常量
public static final String UTF_8 = "UTF-8";
public static final String DES = "DES";
// 靜態初始化
static{
try {
// KEY 生成器
KeyGenerator generator = KeyGenerator.getInstance(DES);
// 初始化,平安隨機算子
generator.init(new SecureRandom( KEY_STR.getBytes(UTF_8) ));
// 生成密鑰
key = generator.generateKey();
generator = null;
} catch (Exception e) {
throw new RuntimeException(e);
}
}
/**
* 對源字符串加密,前往 BASE64編碼後的加密字符串
* @param source 源字符串,明文
* @return 密文字符串
*/
public static String encode(String source){
try {
// 依據編碼格局獲得字節數組
byte[] sourceBytes = source.getBytes(UTF_8);
// DES 加密形式
Cipher cipher = Cipher.getInstance(DES);
cipher.init(Cipher.ENCRYPT_MODE, key);
// 加密後的字節數組
byte[] encryptSourceBytes = cipher.doFinal(sourceBytes);
// Base64編碼器
BASE64Encoder base64Encoder = new BASE64Encoder();
return base64Encoder.encode(encryptSourceBytes);
} catch (Exception e) {
// throw 也算是一種 return 途徑
throw new RuntimeException(e);
}
}
/**
* 對本對象類 encode() 辦法加密後的字符串停止解碼/解密
* @param encrypted 被加密過的字符串,即密文
* @return 明文字符串
*/
public static String decode(String encrypted){
// Base64解碼器
BASE64Decoder base64Decoder = new BASE64Decoder();
try {
// 先輩行base64解碼
byte[] cryptedBytes = base64Decoder.decodeBuffer(encrypted);
// DES 解密形式
Cipher cipher = Cipher.getInstance(DES);
cipher.init(Cipher.DECRYPT_MODE, key);
// 解碼後的字節數組
byte[] decryptStrBytes = cipher.doFinal(cryptedBytes);
// 采取給定編碼格局將字節數組釀成字符串
return new String(decryptStrBytes, UTF_8);
} catch (Exception e) {
// 這類情勢確切合適處置對象類
throw new RuntimeException(e);
}
}
// 單位測試
public static void main(String[] args) {
// 須要加密的字符串
String email = "[email protected]";
// 加密
String encrypted = DESUtils.encode(email);
// 解密
String decrypted = DESUtils.decode(encrypted);
// 輸入成果;
System.out.println("email: " + email);
System.out.println("encrypted: " + encrypted);
System.out.println("decrypted: " + decrypted);
System.out.println("email.equals(decrypted): " + email.equals(decrypted));
}
}