3DES加密、解密工具类
2012-12-09 12:17
183 查看
一个简单的3DES加密、解密工具类,Base64在sun.misc.BASE64Decoder替代类有介绍
package com.w; import java.security.Key; import java.security.Security; import java.util.logging.Logger; import javax.crypto.Cipher; public class ThreeDesUtil { // 密钥的默认键 private static String defaultKey = "key"; // 加密密码功能对象 private Cipher encryptCipher = null; // 解密密码功能对象 private Cipher decryptCipher = null; private Logger logger = Logger.getLogger("decrypt"); /** * 默认构造函数 */ public ThreeDesUtil() { this(defaultKey); } /** * 使用指定的密钥键 * @param strKey 密钥键 */ public ThreeDesUtil(String strKey) { Security.addProvider(new com.sun.crypto.provider.SunJCE()); Key key = getKey(strKey.getBytes()); try { encryptCipher = Cipher.getInstance("DES"); encryptCipher.init(Cipher.ENCRYPT_MODE, key); decryptCipher = Cipher.getInstance("DES"); decryptCipher.init(Cipher.DECRYPT_MODE, key); } catch (Exception e) { logger.warning(e.getMessage()); } } /** * 加密指定的字符串 * @param str 需要加密的字符串 * @return 加密后的字符串 */ public String encrypt(String str) { byte[] byteMi = null; byte[] byteMing = null; // 加密后的字符串 String strEncrypt = ""; try { byteMing = str.getBytes("UTF8"); byteMi = encryptCipher.doFinal(byteMing); strEncrypt = Base64.encode(byteMi); } catch (Exception e) { logger.warning(e.getMessage()); } finally { byteMing = null; byteMi = null; } return strEncrypt; } /** * 根据指定的加密字符串,获取解密后的明文 * @param strMi 加密的字符串 * @return 返回解密后的明文 */ public String decrypt(String strMi) { byte[] byteMing = null; byte[] byteMi = null; String strMing = ""; try { byteMi = Base64.decode(strMi); byteMing = decryptCipher.doFinal(byteMi); strMing = new String(byteMing, "UTF8"); } catch (Exception e) { logger.warning(e.getMessage()); } finally { byteMing = null; byteMi = null; } return strMing; } /** * 根据指定的字节数组,构造一个密钥 * @param arrBTmp 字节数组 * @return 返回生成后的密钥 */ private Key getKey(byte[] array) { // 创建一个空的8位字节数组 byte[] arrayTemp = new byte[8]; int length = array.length; // 长度是否大于8 if (length > 8) { System.arraycopy(array, 0, arrayTemp, 0, 8); } else { System.arraycopy(array, 0, arrayTemp, 0, length); } // 生成密钥 Key key = new javax.crypto.spec.SecretKeySpec(arrayTemp, "DES"); return key; } }
相关文章推荐
- Java实现的3des加密解密工具类示例
- JAVA 3DES加密解密工具类
- iOS 3DES加密解密(一行代码搞定)
- Android 3DES加密解密(JAVA和C#)
- Android 3DES加密解密(JAVA和C#)
- java加密解密工具类
- 3DES+Base64 加密解密的方法
- java 3DES加密解密
- 项目中用到的加密解密工具类
- C#(TripleDES)对应Java(3DES)加密工具类
- [JAVA]JAVA和C# 3DES加密解密
- ◆JAVA加密解密-3DES
- 加密解密工具类
- Java-DES算法加密解密工具类
- 3DES加密解密调用示例
- 第十六篇:JAVA加密解密之3DES(TripleDES)
- C# 加密解密(DES,3DES,MD5,Base64) 类
- 用3DES加密解密 BadPaddingException
- PHP和.NET通用的加密解密函数类,均使用3DES加解密
- Java加密解密工具类