您的位置:首页 > 编程语言 > Java开发

Java中3DES的加密与解密

2013-11-11 00:22 507 查看
3DES加密与解密的Java实现

import javax.crypto.Cipher;

import javax.crypto.SecretKey;

import javax.crypto.spec.SecretKeySpec;

/** * 3DES工具类 */

public class DESUtils {

/**

* 加密

* @param inStr 需要加密的内容

* @param secretKey 密钥

* @return 加密后的数据

*/

public static String encrypt(String inStr, String secretKey) {

SecretKey deskey = new SecretKeySpec(secretKey.getBytes(), "DESede");

Cipher cipher;

String outStr = null;

try {

cipher = Cipher.getInstance("DESede");

cipher.init(Cipher.ENCRYPT_MODE, deskey);

outStr = byte2hex(cipher.doFinal(inStr.getBytes()));

} catch (Exception e) {

outStr = "default";

e.printStackTrace();

}

return outStr;

}

/**

* 解密

* @param inStr 需要解密的内容

* @param secretKey 密钥

* @return 解密后的数据

*/

public static String decrypt(String inStr, String secretKey)

{

SecretKey deskey = new SecretKeySpec(secretKey.getBytes(), "DESede");

Cipher cipher; String outStr = null;

try {

cipher = Cipher.getInstance("DESede");

cipher.init(Cipher.DECRYPT_MODE, deskey);

outStr = new String(cipher.doFinal(hex2byte(inStr)));

} catch (Exception e) {

outStr = "default";

e.printStackTrace();

}

return outStr;

}

/**

* 转化为16进制字符串方法

*

* @param digest 需要转换的字节组

* @return 转换后的字符串

*/

private static String byte2hex(byte[] digest) {

StringBuffer hs = new StringBuffer();

String stmp = "";

for (int n = 0; n < digest.length; n++) {

stmp = Integer.toHexString(digest
& 0XFF);

if (stmp.length() == 1) {

hs.append("0" + stmp);

} else {

hs.append(stmp);

}

}

return hs.toString().toUpperCase();

}

/**

* 十六进转二进制

* @param hexStr 待转换16进制字符串

* @return 二进制字节组

*/

public static byte[] hex2byte(String hexStr){

if (hexStr == null)

return null;

hexStr = hexStr.trim();

int len = hexStr.length();

if (len == 0 || len % 2 == 1)

return null;

byte[] digest = new byte[len / 2];

try {

for (int i = 0; i < hexStr.length(); i += 2) {

digest[i / 2] = (byte) Integer.decode("0x" + hexStr.substring(i, i + 2)).intValue();

} return digest;

} catch (Exception e) {

return null;

}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: