一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服務器之家 - 編程語言 - JAVA教程 - 一個Java配置文件加密解密工具類分享

一個Java配置文件加密解密工具類分享

2019-11-20 15:06Java教程網 JAVA教程

在 JavaEE 配置文件中,例如 XML 或者 properties 文件,由于某些敏感信息不希望普通人員看見,則可以采用加密的方式存儲,程序讀取后進行解密

常見的如: 數據庫用戶密碼,短信平臺用戶密碼,系統間校驗的固定密碼等。
本工具類參考了 《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));
 }
}

 

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国内在线播放 | 逼123| 日韩专区 | 国产乱插| 黑人video粗暴日本 | 欧美日韩一区二区三区在线播放 | 欧美日韩精品一区二区三区视频在线 | 好男人在线观看hd中字 | 日本视频中文字幕 | 2022av小四郎的最新地址 | 日本一区二区视频免费播放 | 欧美日韩视频在线第一区二区三区 | 欧美日韩亚洲国内综合网俺 | 草莓视频网站18勿进 | 青青国产成人久久激情91麻豆 | 关晓彤一级做a爰片性色毛片 | www.四色| 亚洲99久久无色码中文字幕 | 男同精品视频免费观看网站 | 国产亚洲精品网站 | tiny4k欧美极品在线 | 好湿好紧好多水c | 色婷婷天天综合在线 | 日韩网新片免费 | 鸭子玩富婆流白浆视频 | 免费观看网站 | 国内精品久久久久影院网站 | 大香人蕉免费视频75 | 99久久免费精品视频 | 亚洲狼人综合干 | 色悠久久久久综合网小说 | 色老女人 | 女娃开嫩苞经历小说 | 欧美日韩国产亚洲人成 | 国产精品综合在线 | 和岳m的小说 | 校花被老头夺去第一次动图 | 四缺一的小说 | 800精品国产导航 | 性色AV一区二区三区V视界影院 | 欧美1|