当前位置:  编程技术>java/j2ee

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

    来源: 互联网  发布时间:2014-11-05

    本文导语:  常见的如: 数据库用户密码,短信平台用户密码,系统间校验的固定密码等。本工具类参考了 《Spring.3.x企业应用开发实战》一书 5.3节的实现。完整代码与注释信息如下: 代码如下:package com.cncounter.util.comm; import java.security.Key;impor...

常见的如: 数据库用户密码,短信平台用户密码,系统间校验的固定密码等。
本工具类参考了 《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));
 }
}


    
 
 

您可能感兴趣的文章:

  • 如何实现在unix下delphi与java的相互加密解密??求救???
  • 高手帮一下,Server用java DES加密,Client用c DES解密,c如何解密,能否给出程序!
  • 请问谁对用blowfish来做JAVA的加密解密比较熟悉,请帮忙写个文本的加密解密类,(我这有一个但是写得不很成熟不能解密)
  • 非常着急,关于DES加密的,用java加密过的字符串,药用Linux下的C语言来解密,涉及到补位的问题,弄了几天都没有实现,有高手会的,请指点一二!!!!!!!!
  • java使用异或实现变量互换和异或加密解密示例
  • [J2SE]Java中3DES加密解密调用示例
  • java使用des加密解密示例分享
  • java中使用DES加密解密实例
  • 兼容PHP和Java的des加密解密代码分享
  • java加密算法分享(rsa解密、对称加密、md5加密)
  • des加密解密JAVA与.NET互通实例
  • java中常用工具类之字符串操作类和MD5加密解密类
  • java常用工具类之DES和Base64加密解密类
  • java加密解密示例分享
  • 基于Java实现的Base64加密、解密原理代码
  • 如何调用JAVA的库函数进行加解密运算?
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Java加密包 Jasypt
  • 怎么用java现实文件加密之后上传???
  • 请求Java的加密!
  • 使用java自带des加密算法实现文件加密和字符串加密
  • java异或加密算法
  • java如何将明文加密成密文存到数据库中?
  • Java的NTRU加密算法库 NTRU
  • JAVA有用于数据校验的类吗?象加密算法那样的.
  • 寻求java加密算法及实例
  • 有没有人用java编过加密算法???
  • Java加密库 JSDSI
  • 简洁实用的Java Base64编码加密异常处理类代码
  • java位运算加密示例
  • 我用JAVA做了一个加密的类,在JSP中怎么调用阿?
  • 请问哪个JAVA反编译软件可以反编译加密过的CLASS???
  • java不可逆加密算法之md5加密算法使用示例
  • java中使用数组进行模拟加密的方法
  • java实现md5加密示例
  • 论坛 iis7站长之家
  • java易懂易用的MD5加密(可直接运行) (1)第1/2页
  • java命名空间java.sql类types的类成员方法: java_object定义及介绍
  • 我想学JAVA ,是买THINK IN JAVA 还是JAVA2核心技术:卷1 好???
  • java命名空间java.awt.datatransfer类dataflavor的类成员方法: imageflavor定义及介绍
  • 请问Java高手,Java的优势在那里??,Java主要适合于开发哪类应用程序
  • java命名空间java.lang.management类managementfactory的类成员方法: getcompilationmxbean定义及介绍
  • 如何将java.util.Date转化为java.sql.Date?数据库中Date类型对应于java的哪个Date呢
  • java命名空间java.lang.management接口runtimemxbean的类成员方法: getlibrarypath定义及介绍
  • 谁有电子版的《Java编程思想第二版(Thinking in java second)》和《Java2编程详解(special edition java2)》?得到给分
  • java命名空间java.lang.management接口runtimemxbean的类成员方法: getstarttime定义及介绍
  • 本人想学java,请问java程序员的待遇如何,和java主要有几个比较强的方向
  • java命名空间java.awt.datatransfer类dataflavor的类成员方法: stringflavor定义及介绍


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3