久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

SpringBoot對properties文件進(jìn)行加密解密

 瀚海璨夜 2019-05-14
                                                      版權(quán)聲明: https://blog.csdn.net/Dongguabai/article/details/81114569

主要參考博客:https://blog.csdn.net/sz85850597/article/details/80396321

主要使用的jasypt-spring-boot這個(gè)開源工具,。

引入maven依賴

配置加解密Bean

  1. @Configuration
  2. public class EncryptionPropertyConfig {
  3. @Bean(name = "encryptablePropertyResolver")
  4. public EncryptablePropertyResolver encryptablePropertyResolver() {
  5. return new EncryptionPropertyResolver();
  6. }
  7. class EncryptionPropertyResolver implements EncryptablePropertyResolver {
  8. @Override
  9. public String resolvePropertyValue(String value) {
  10. if (StringUtils.isBlank(value)) {
  11. return value;
  12. }
  13. // 值以DES@開頭的均為DES加密,需要解密
  14. if (value.startsWith("DES@")) {
  15. return resolveDESValue(value.substring(4));
  16. }
  17. // 不需要解密的值直接返回
  18. return value;
  19. }
  20. private String resolveDESValue(String value) {
  21. // 自定義DES密文解密
  22. return DesUtil.decrypt(value, DesUtil.KEY);
  23. }
  24. }
  25. }

編寫加解密工具類

之前在github上找到的工具類,,抱歉之前沒留下原地址,。

  1. @NoArgsConstructor(access = AccessLevel.PRIVATE)
  2. public class DesUtil {
  3. /** 默認(rèn)key */
  4. public final static String KEY = "ScAKC0XhadTHT3Al0QIDAQAB";
  5. /**
  6. * DES加密
  7. *
  8. *
  9. * @param data
  10. * 待加密字符串
  11. * @param key
  12. * 校驗(yàn)位
  13. * @return
  14. */
  15. public static String encrypt(String data,String key) {
  16. String encryptedData = null;
  17. try {
  18. // DES算法要求有一個(gè)可信任的隨機(jī)數(shù)源
  19. SecureRandom sr = new SecureRandom();
  20. DESKeySpec deskey = new DESKeySpec(key.getBytes());
  21. // 創(chuàng)建一個(gè)密匙工廠,,然后用它把DESKeySpec轉(zhuǎn)換成一個(gè)SecretKey對象
  22. SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");
  23. SecretKey secretKey = keyFactory.generateSecret(deskey);
  24. // 加密對象
  25. Cipher cipher = Cipher.getInstance("DES");
  26. cipher.init(Cipher.ENCRYPT_MODE, secretKey, sr);
  27. // 加密,,并把字節(jié)數(shù)組編碼成字符串
  28. encryptedData = new sun.misc.BASE64Encoder().encode(cipher.doFinal(data.getBytes()));
  29. } catch (Exception e) {
  30. throw new RuntimeException("加密錯(cuò)誤,,錯(cuò)誤信息:", e);
  31. }
  32. return encryptedData;
  33. }
  34. /**
  35. * DES解密
  36. *
  37. *
  38. * @param cryptData
  39. * 待解密密文
  40. * @param key
  41. * 校驗(yàn)位
  42. * @return
  43. */
  44. public static String decrypt(String cryptData,String key) {
  45. String decryptedData = null;
  46. try {
  47. // DES算法要求有一個(gè)可信任的隨機(jī)數(shù)源
  48. SecureRandom sr = new SecureRandom();
  49. DESKeySpec deskey = new DESKeySpec(key.getBytes());
  50. // 創(chuàng)建一個(gè)密匙工廠,,然后用它把DESKeySpec轉(zhuǎn)換成一個(gè)SecretKey對象
  51. SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");
  52. SecretKey secretKey = keyFactory.generateSecret(deskey);
  53. // 解密對象
  54. Cipher cipher = Cipher.getInstance("DES");
  55. cipher.init(Cipher.DECRYPT_MODE, secretKey, sr);
  56. // 把字符串解碼為字節(jié)數(shù)組,并解密
  57. decryptedData = new String(cipher.doFinal(new sun.misc.BASE64Decoder().decodeBuffer(cryptData)));
  58. } catch (Exception e) {
  59. throw new RuntimeException("解密錯(cuò)誤,,錯(cuò)誤信息:", e);
  60. }
  61. return decryptedData;
  62. }
  63. public static void main(String[] args) {
  64. System.out.println("url::"+encrypt("jdbc:oracle:thin:@127.0.0.1:1521:xe",KEY));
  65. System.out.println("username::"+encrypt("admin",KEY));
  66. System.out.println("password::"+encrypt("admin",KEY));
  67. }
  68. }

工具類中的main方法執(zhí)行結(jié)果為:

修改properties文件

運(yùn)行項(xiàng)目測試通過!

    本站是提供個(gè)人知識管理的網(wǎng)絡(luò)存儲空間,,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購買等信息,,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請點(diǎn)擊一鍵舉報(bào),。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約