package com.yihui.threedes;
import java.security.Key;
import java.util.Scanner;
import javax.crypto.Cipher;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.DESedeKeySpec;
import javax.crypto.spec.IvParameterSpec;
import sun.misc.BASE64Decoder;
public class Destest {
/**
* BASE64Decoder 对象 用于拿到加密后传过来的字符串转byte
*/
static final BASE64Decoder decoder = new BASE64Decoder();
public static void main(String[] args) throws Exception {
/**
* 密钥 32位 固定 与加密密钥一致
*/
byte[] key = new BASE64Decoder().decodeBuffer("fffffffe79ffffff9bffffffd36b2c1c");
byte[] keyiv = { 1, 2, 3, 4, 5, 6, 7, 8 };
Scanner sc = new Scanner(System.in);
//拿到存储地址的byte数据
byte[] strDecode = des3DecodeCBC(key, keyiv, decoder.decodeBuffer("zb4vF6cO48g="));
String strGet = new String(strDecode, "UTF-8");
System.out.println("解密后的字符串内容为:" + strGet);
}
public static byte[] des3EncodeCBC(byte[] key, byte[] keyiv, byte[] data) throws Exception {
Key deskey = null;
DESedeKeySpec spec = new DESedeKeySpec(key);
SecretKeyFactory keyfactory = SecretKeyFactory.getInstance("desede");
deskey = keyfactory.generateSecret(spec);
Cipher cipher = Cipher.getInstance("desede" + "/CBC/PKCS5Padding");
IvParameterSpec ips = new IvParameterSpec(keyiv);
cipher.init(Cipher.ENCRYPT_MODE, deskey, ips);
byte[] bOut = cipher.doFinal(data);
return bOut;
}
public static byte[] des3DecodeCBC(byte[] key, byte[] keyiv, byte[] data) throws Exception {
Key deskey = null;
DESedeKeySpec spec = new DESedeKeySpec(key);
SecretKeyFactory keyfactory = SecretKeyFactory.getInstance("desede");
deskey = keyfactory.generateSecret(spec);
Cipher cipher = Cipher.getInstance("desede" + "/CBC/PKCS5Padding");
IvParameterSpec ips = new IvParameterSpec(keyiv);
cipher.init(Cipher.DECRYPT_MODE, deskey, ips);
byte[] bOut = cipher.doFinal(data);
return bOut;
}
}
java 3des加密解密
最新推荐文章于 2024-08-18 21:52:13 发布