天天看點

DES加密工具類-DesUtil

有一個功能要将拍照的圖檔進行加密儲存,選擇了DES加密。記錄一下代碼。

import java.security.Key;

import javax.crypto.Cipher;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.DESKeySpec;
import javax.crypto.spec.IvParameterSpec;

/**
 * Created by Administrator on 2018/4/3 0003.
 */

public class DesUtil {
    // 向量
    private static final byte[] keyiv = { 1, 2, 3, 4, 5, 6, 7, 8 };

    //加密
    public static byte[] desEncodeCBC(byte[] key, byte[] data) throws Exception {
        Key deskey = null;
        DESKeySpec spec = new DESKeySpec(key);
        SecretKeyFactory keyfactory = SecretKeyFactory.getInstance("DES");
        deskey = keyfactory.generateSecret(spec);
        Cipher cipher = Cipher.getInstance("DES/CBC/PKCS5Padding"); // 加密方法/運算模式/填充模式
        IvParameterSpec ips = new IvParameterSpec(keyiv);
        cipher.init(Cipher.ENCRYPT_MODE, deskey, ips);
        byte[] bOut = cipher.doFinal(data);
        return bOut;
    }

    //加密
    public static byte[] desEncodeCBC(String key, String data) throws Exception {
        byte[] _data = data.getBytes("UTF-8");
        byte[] _key = key.getBytes("UTF-8");
        byte[] bOut = desEncodeCBC(_key, _data);

        return bOut; // Base64加密後的密文
    }

    //加密
    public static byte[] desEncodeCBC(String key, byte[] data) throws Exception {
        byte[] _key = key.getBytes("UTF-8");
        byte[] bOut = desEncodeCBC(_key, data);
        return bOut; // Base64加密後的密文
    }

    //解密
    public static byte[] desDecodeCBC(byte[] key, byte[] data) throws Exception {
        Key deskey = null;
        DESKeySpec spec = new DESKeySpec(key);
        SecretKeyFactory keyfactory = SecretKeyFactory.getInstance("DES");
        deskey = keyfactory.generateSecret(spec);
        Cipher cipher = Cipher.getInstance("DES/CBC/PKCS5Padding");
        IvParameterSpec ips = new IvParameterSpec(keyiv);
        cipher.init(Cipher.DECRYPT_MODE, deskey, ips);
        byte[] bOut = cipher.doFinal(data);
        return bOut;
    }

    //解密
    public static String desDecodeCBC(String key, String data) throws Exception {
        byte[] _data = data.getBytes();
        byte[] _key = key.getBytes("UTF-8");
        byte[] bOut = desDecodeCBC(_key, _data);
        return new String(bOut, "UTF-8");
    }

    //解密
    public static String desDecodeCBC(String key, byte[] data) throws Exception {
        byte[] _key = key.getBytes("UTF-8");
        byte[] bOut = desDecodeCBC(_key, data);
        return new String(bOut, "UTF-8");
    }
}