【java工具类】DES加密
2015-07-16 08:58
381 查看
DES全称为Data Encryption Standard,即数据加密标准,是一种使用密钥加密的块算法,1976年被美国联邦政府的国家标准局确定为联邦资料处理标准(FIPS),随后在国际上广泛流传开来。
百度百科中解释:
http://baike.baidu.com/link?url=yciLi4U1xPAeMhJcgDQzqE-b-U3QCxE_4hVH-ISdb6OPpVMl5WReOY-Tx2Vi-OPaGjfPCkYEPYPhn1RiUgxfia
源代码
百度百科中解释:
http://baike.baidu.com/link?url=yciLi4U1xPAeMhJcgDQzqE-b-U3QCxE_4hVH-ISdb6OPpVMl5WReOY-Tx2Vi-OPaGjfPCkYEPYPhn1RiUgxfia
源代码
import java.io.IOException; import java.security.SecureRandom; import javax.crypto.Cipher; import javax.crypto.SecretKey; import javax.crypto.SecretKeyFactory; import javax.crypto.spec.DESKeySpec; import sun.misc.BASE64Decoder; import sun.misc.BASE64Encoder; public class DesUtil { private final static String DES = "DES"; public static void main(String[] args) throws Exception { String data = "kaixuanFor3lingDAO";//加密内容 String key = "d!d11dderew!#@#@r111"; System.err.println(encrypt(data, key)); System.err.println(decrypt(encrypt(data, key), key)); } /** * Description 根据键值进行加密 * @param data * @param key 加密键byte数组 * @return * @throws Exception */ public static String encrypt(String data, String key) throws Exception { byte[] bt = encrypt(data.getBytes(), key.getBytes()); String strs = new BASE64Encoder().encode(bt); return strs; } /** * Description 根据键值进行解密 * @param data * @param key 加密键byte数组 * @return * @throws IOException * @throws Exception */ public static String decrypt(String data, String key) throws IOException, Exception { if (data == null) return null; BASE64Decoder decoder = new BASE64Decoder(); byte[] buf = decoder.decodeBuffer(data); byte[] bt = decrypt(buf,key.getBytes()); return new String(bt); } /** * Description 根据键值进行加密 * @param data * @param key 加密键byte数组 * @return * @throws Exception */ private static byte[] encrypt(byte[] data, byte[] key) throws Exception { // 生成一个可信任的随机数源 SecureRandom sr = new SecureRandom(); // 从原始密钥数据创建DESKeySpec对象 DESKeySpec dks = new DESKeySpec(key); // 创建一个密钥工厂,然后用它把DESKeySpec转换成SecretKey对象 SecretKeyFactory keyFactory = SecretKeyFactory.getInstance(DES); SecretKey securekey = keyFactory.generateSecret(dks); // Cipher对象实际完成加密操作 Cipher cipher = Cipher.getInstance(DES); // 用密钥初始化Cipher对象 cipher.init(Cipher.ENCRYPT_MODE, securekey, sr); return cipher.doFinal(data); } /** * Description 根据键值进行解密 * @param data * @param key 加密键byte数组 * @return * @throws Exception */ private static byte[] decrypt(byte[] data, byte[] key) throws Exception { // 生成一个可信任的随机数源 SecureRandom sr = new SecureRandom(); // 从原始密钥数据创建DESKeySpec对象 DESKeySpec dks = new DESKeySpec(key); // 创建一个密钥工厂,然后用它把DESKeySpec转换成SecretKey对象 SecretKeyFactory keyFactory = SecretKeyFactory.getInstance(DES); SecretKey securekey = keyFactory.generateSecret(dks); // Cipher对象实际完成解密操作 Cipher cipher = Cipher.getInstance(DES); // 用密钥初始化Cipher对象 cipher.init(Cipher.DECRYPT_MODE, securekey, sr); return cipher.doFinal(data); } }
相关文章推荐
- eclipse 设置编辑区、控制台、xml等文本文件字体大小
- eclipse 工程配置(.classpath和.project)文件的作用
- eclipse Code Templates的深入研究
- java web中的中文字符乱码问题的解决
- ConcurrentHashMap原理分析
- java中的日期时间处理
- 新秀翻译(一个)——Java在继承和组合
- Java中ListIterator和Iterator详解与辨析
- Java学习篇-------对于main函数参数的理解
- Java错误提示-------数组下标越界
- servlet--多线程问题及java内存模型
- 在dos环境运行java程序
- 配置java的环境变量
- Java SE 学习笔记(一)
- Eclipse经验总结
- 一个简单的java登录小界面
- 求二叉树的深度,判定二叉树是否是平衡二叉树(java)
- java设计模式学习之策略模式
- Java构造方法注意事项
- 刷题日志——跳跃游戏