DES加密解密
来源:互联网 发布:snmp软件下载 编辑:程序博客网 时间:2024/06/16 00:02
package com.yc.Tool;
import java.io.IOException;
import java.lang.reflect.Field;
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;
/**
* 加密工具
* Author:luojing
* 2016年6月30日 上午10:25:09
*/
public class DES {
private final static String DES = “DES”;
private final static String KEY = "test1234";/** * 根据键值进行加密 * @param data * @param key 加密键byte数组 */public static String encrypt(String data) throws Exception { byte[] bt = encrypt(data.getBytes()); String strs = new BASE64Encoder().encode(bt); return strs;}/** * 根据键值进行加密 * @param data * @param key 加密键byte数组 */private static byte[] encrypt(byte[] data) throws Exception { // 生成一个可信任的随机数源 SecureRandom sr = new SecureRandom(); // 从原始密钥数据创建DESKeySpec对象 DESKeySpec dks = new DESKeySpec(KEY.getBytes()); // 创建一个密钥工厂,然后用它把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);}/** * 根据键值进行解密 * @param data * @param key 加密键byte数组 */public static String decrypt(String data) throws IOException, Exception { if (data == null) return null; BASE64Decoder decoder = new BASE64Decoder(); byte[] buf = decoder.decodeBuffer(data); byte[] bt = decrypt(buf); return new String(bt);}/** * 根据键值进行解密 * @param data * @param key 加密键byte数组 */private static byte[] decrypt(byte[] data) throws Exception { // 生成一个可信任的随机数源 SecureRandom sr = new SecureRandom(); // 从原始密钥数据创建DESKeySpec对象 DESKeySpec dks = new DESKeySpec(KEY.getBytes()); // 创建一个密钥工厂,然后用它把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);}/** * 对象解密 */public static Object ObjectDecrypt(Object obj) throws Exception{ Class<? extends Object> cls = obj.getClass(); for(Field f:cls.getDeclaredFields()){ f.setAccessible(true); Object value = f.get(obj);//得到加密参数 if(StrUtil.VObject(value) || !"password".equals(f.getName())){//值不为空,密码不需要des解密 f.set(obj, decrypt(String.valueOf(value)));//加密重新赋值 } } return obj;}private static String MD5="MD5";/** * MD5加密 * @return */public static String MD5(String str){ try { MessageDigest md = MessageDigest.getInstance(MD5); md.update(str.getBytes()); byte b[] = md.digest(); int i; StringBuffer buf = new StringBuffer(""); for (int offset = 0; offset < b.length; offset++) { i = b[offset]; if (i < 0) i += 256; if (i < 16) buf.append("0"); buf.append(Integer.toHexString(i)); } str = buf.toString(); } catch (Exception e) { e.printStackTrace(); } return str;
}
0 0
- DES/3DES加密,解密
- DES加密解密代码
- 3DES 加密解密
- DES加密解密函数
- DES加密解密
- DES加密、解密
- des加密解密
- DES 加密/解密整理
- DES加密解密
- C#DES加密解密
- DES加密解密
- 文件DES加密解密
- c# DES 加密解密
- 3des加密解密
- java--des加密解密
- DES加密解密算法
- DES加密解密
- DES加密解密
- 【QT练习】文件简单读写操作
- PAT乙级练习题B1035. 插入与归并
- ls: cannot access /usr/sbin/smartctl: No such file or directory
- 107. Binary Tree Level Order Traversal II
- SVN
- DES加密解密
- 将HTML5 Canvas的内容保存为图片
- osi七层模型和tcp/ip四层模型每层作用和协议
- C语言的数组
- php入门(3) QtQuick最简单的注册系统
- linux centos6.3 升级svn1.6到svn1.8
- 你需要知道的Android拍照适配方案
- Android开发问题汇总
- java.lang.IllegalStateException: Illegal access: this web application instance has been stopped