/** * java中DES加密或解密 */ import java.security.SecureRandom; import javax.crypto.Cipher; import javax.crypto.SecretKey; import javax.crypto.SecretKeyFactory; import javax.crypto.spec.DESKeySpec; /** * 通过DES算法,加密或解密数据 * @author sunlightcs * 2011-4-29 * http://hi.juziku.com/sunlightcs/ */ public class EncryptCode { private final static String DES = "DES"; /** * DES加密KEY */ public final static String DES_KEY = "test_key"; /** * 加密 * @param src 数据源 * @param key 密钥,长度必须是8的倍数 * @return 返回加密后的数据 * @throws Exception */ public static byte[] encrypt(byte[] src, byte[] key) throws RuntimeException { // DES算法要求有一个可信任的随机数源 try{ 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(src); }catch(Exception e){ throw new RuntimeException(e); } } /** * 解密 * @param src 数据源 * @param key 密钥,长度必须是8的倍数 * @return 返回解密后的原始数据 * @throws Exception */ public static byte[] decrypt(byte[] src, byte[] key) throws RuntimeException { try{ // DES算法要求有一个可信任的随机数源 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(src); }catch(Exception e){ throw new RuntimeException(e); } } /** * DES数据解密 * @param data * @param key 密钥 * @return * @throws Exception */ public final static String decrypt(String data, String key){ return new String(decrypt(hex2byte(data.getBytes()),key.getBytes())); } /** * DES数据加密 * @param data * @param key 密钥 * @return * @throws Exception */ public final static String encrypt(String data, String key){ if(data!=null) try { return byte2hex(encrypt(data.getBytes(),key.getBytes())); }catch(Exception e) { throw new RuntimeException(e); } return null; } /** * 二行制转字符串 * @param b * @return */ private static String byte2hex(byte[] b) { StringBuilder hs = new StringBuilder(); String stmp; for (int n = 0; b!=null && n < b.length; n++) { stmp = Integer.toHexString(b[n] & 0XFF); if (stmp.length() == 1) hs.append('0'); hs.append(stmp); } return hs.toString().toUpperCase(); } private static byte[] hex2byte(byte[] b) { if((b.length%2)!=0) throw new IllegalArgumentException(); byte[] b2 = new byte[b.length/2]; for (int n = 0; n < b.length; n+=2) { String item = new String(b,n,2); b2[n/2] = (byte)Integer.parseInt(item,16); } return b2; } public static void main(String[] args) { String test = "测试DES加密解密"; //DES加密 test = encrypt(test, DES_KEY); System.out.println("加密后的数据:" + test); //DES解密 test = decrypt(test, DES_KEY); System.out.println("解密后的数据:" + test); } }
java中DES加密或解密,很多场合都会用到DES加密或解密,如:邮箱验证等。
相关推荐
java 3des加密、解密工具类 java的3DES加密/解密
des加密解密java实现des加密解密java实现des加密解密java实现des加密解密java实现des加密解密java实现des加密解密java实现
java的DES加密解密:用于密码在数据库的加密,解码类
Java实现des加密解密算法,des加密解密算法
java实现DES加密、解密算法 代码中有详细的注释,有不对或者写的不好的地方请大家指导
java版Des加密解密源码 DES加密解密程序的主程序在 FileDES类中 运行时使用的例子是本目录下的111.doc文件,运行后自动生成222.doc文件和333.doc文件。 其中111.doc文件加密后的文件是222.doc文件,222.doc文件...
des加密解密算法,通过DES加密解密实现一个String字符串的加密和解密.
java和javascript加密解密,可相互加密解密,内含javascript代码和java代码,解压即用,自定义密钥
java-des加密解密程序,基于java编写的des,3des加密程序,包括MAC校验,MD5校验等
Java版标准3DES加密/解密方法,加密函数desedeEncoder(String paramString1, String key) 解密函数desedeDecoder(String dest, String key)
JavaDES通过秘钥加密解密Demo
Java中3DES加密解密示例(封装byte数组16进制互转)
本次使用JAVA语言,采用3DES加密算法进行对文本文件的加密,通过二进制和十六进制的转换来实现,产生加密文件,再对加密文件进行解密。 关键词:DES加密算法、加密、解密。摘要 随着现代网络技术的飞速发展,人们...
java版DES通用加密解密,使用JDK通用类,所以支持sun JDK和ibm JDK等
java实现des加密和解密,encrypt是加密函数 decrypt是解密函数
JAVA版Des 加密 解密 源码 JAVA版Des加密解密源码
Java DES 加密、解密
des加密算法(js+java)加密与解密结果相同 包含三个文件 : des.js des.html ,用于实现前端脚本的加密与解密 des.java 用于后台的加密解密操作; 项目中正好用到,已经过验证,两个加密解密结果相同,分享给...
使用java技术编写的Des加密/解密,的工具类,已亲测可完全正确使用,无bug
DES加密 java与.net可以相互加密解密两种方法