Java实现的实现的3des加密解密工具类示例加密解密工具类示例
主要介绍了Java实现的3des加密解密工具类,结合完整实例形式分析了3des加密解密的具体步骤与相关操作技
巧,需要的朋友可以参考下
本文实例讲述了Java实现的3des加密解密工具类。分享给大家供大家参考,具体如下:
package com.gcloud.common;
import org.apache.poi.poifs.property.Child;
import org.bouncycastle.jce.provider.BouncyCastleProvider;
import javax.crypto.*;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;
import java.security.*;
import java.security.spec.AlgorithmParameterSpec;
/**
* 三重数据加密算法工具类
* Created by charlin on 2017/9/11.
*/
public class V3DESUtil {
//密钥存放位置
public static String FILENAME = "d:/3des.key";
// 1为加密,0为解密
private int isEncrypt = -1;
// 加密/解密密钥,长度为16byte或者24byte。
private String keyStr;
// 要加密/解密信息(解密时需为十六进制显示的字符串)
private String message;
public V3DESUtil() {
}
public V3DESUtil(int isEncrypt, String keyStr, String message) {
this.isEncrypt = isEncrypt;
this.keyStr = keyStr;
this.message = message;
}
//numStr = 12345678
public String V3DESChiper(String numStr) {
String result = null;
try {
Security.addProvider(new BouncyCastleProvider());
URL url = getClass().getResource(FILENAME);
File myFile = new File(FILENAME);
if (!myFile.exists()) {
return "Can't Find " + FILENAME;
}
try {
BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));
while ((keyStr = in.readLine()) == null) {
return "读取密钥失败!";
}
in.close();
} catch (IOException e) {
e.printStackTrace();
}
SecretKey key = new SecretKeySpec(keyStr.getBytes(), "DESede");
result = null;
byte[] textByte = null;
byte[] messageByte = null;
Cipher cipher = Cipher.getInstance("DESede/CBC/PKCS5Padding", "BC");
AlgorithmParameterSpec spec = new IvParameterSpec(numStr.getBytes());
if (isEncrypt == 1) {
messageByte = message.getBytes();
cipher.init(Cipher.ENCRYPT_MODE, key, spec);
} else if (isEncrypt == 0) {
messageByte = decodeHex(message);
cipher.init(Cipher.DECRYPT_MODE, key, spec);
} else {
return "加解密设置错误,请确认输入:1为加密;0为解密";
}
textByte = cipher.doFinal(messageByte);
if (isEncrypt == 1) {
result = encodeHex(textByte);
} else if (isEncrypt == 0) {
result = new String(textByte);
评论0