欢迎来到代码驿站!

JAVA代码

当前位置:首页 > 软件编程 > JAVA代码

一个Java配置文件加密解密工具类分享

时间:2020-10-06 21:56:01|栏目: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 = "encrypt@cncounter.com";
 // 常量
 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 = "renfufei@qq.com";
  // 加密
  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));
 }
}

上一篇:java中实现递归计算二进制表示中1的个数

栏    目:JAVA代码

下一篇:Java Web Fragment在项目中使用方法详解

本文标题:一个Java配置文件加密解密工具类分享

本文地址:http://www.codeinn.net/misctech/7792.html

推荐教程

广告投放 | 联系我们 | 版权申明

重要申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:914707363 | 邮箱:codeinn#126.com(#换成@)

Copyright © 2020 代码驿站 版权所有