极简之3DES加密CBC模式

import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;
import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.DESedeKeySpec;
import javax.crypto.spec.IvParameterSpec;

public class EncryptUtils {

    private static String KEY = "24位";
    private static String DIRECT = "";

    public static String decryptThreeDESCBC(String param) {
        String clearText = null;
        try{
            BASE64Decoder base64Decoder =new BASE64Decoder();
            byte[] data =base64Decoder.decodeBuffer(param);
            byte[] key=KEY.getBytes("gb2312");;
            byte[] direct=DIRECT.getBytes("gb2312");
            DESedeKeySpec dks = new DESedeKeySpec(key);
            SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("desede");
            SecretKey securekey = keyFactory.generateSecret(dks);
            Cipher cipher = Cipher.getInstance("desede" + "/CBC/PKCS5Padding");
            IvParameterSpec ivp = new IvParameterSpec(direct);
            cipher.init(Cipher.DECRYPT_MODE, securekey,ivp);
            byte[] lightByte = cipher.doFinal(data);
            clearText =new String(lightByte,"gb2312");
        }catch (Exception e){
            System.out.println(e.getMessage());
        }
        return clearText;
    }

    public static String encryptThreeDESCBC(String param) throws Exception {
        final DESedeKeySpec dks = new DESedeKeySpec(KEY.getBytes("gb2312"));
        final SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DESede");
        final SecretKey securekey = keyFactory.generateSecret(dks);
        final IvParameterSpec iv = new IvParameterSpec(DIRECT.getBytes("gb2312"));
        final Cipher cipher = Cipher.getInstance("DESede/CBC/PKCS5Padding");
        cipher.init(Cipher.ENCRYPT_MODE, securekey,iv);
        final byte[] b = cipher.doFinal(param.getBytes());
        final BASE64Encoder encoder = new BASE64Encoder();
        return encoder.encode(b).replaceAll("\r", "").replaceAll("\n", "");
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值