des加密解密


import org.apache.commons.codec.binary.Base64;

import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;
import java.nio.charset.StandardCharsets; 

public class DESUtil {

    public static byte[] desKey;

    static{
        try{
            desKey = initKey();
        }catch(Exception e){
            e.printStackTrace();
        }
    }

    /**
     * 生成密钥
     */
    public static byte[] initKey() throws Exception{
        KeyGenerator keyGen = KeyGenerator.getInstance("DES");
        keyGen.init(56);
        SecretKey secretKey = keyGen.generateKey();
        return secretKey.getEncoded();
    }


    /**
     * DES 加密
     */
    public static byte[] encrypt(byte[] data, byte[] key) throws Exception{
        SecretKey secretKey = new SecretKeySpec(key, "DES");
        Cipher cipher = Cipher.getInstance("DES");
        cipher.init(Cipher.ENCRYPT_MODE, secretKey);
        byte[] cipherBytes = cipher.doFinal(data);
        return cipherBytes;
    }


    /**
     * DES 解密
     */
    public static byte[] decrypt(byte[] data, byte[] key) throws Exception{
        SecretKey secretKey = new SecretKeySpec(key, "DES");

        Cipher cipher = Cipher.getInstance("DES");
        cipher.init(Cipher.DECRYPT_MODE, secretKey);
        byte[] plainBytes = cipher.doFinal(data);
        return plainBytes;
    }

    public static void main(String[] args) throws Exception {
        //key得八位
        Base64 base64 = new Base64(true);
        String encrypt = base64.encodeAsString(encrypt("131asda0177".getBytes(StandardCharsets.UTF_8), "1baweide".getBytes(StandardCharsets.UTF_8)));
        System.out.println(encrypt);
        String decrypt = new String(decrypt(base64.decode(encrypt), "1baweide".getBytes(StandardCharsets.UTF_8)));
        System.out.println(decrypt);
    }
}
posted @ 2022-08-29 11:42  qwer78  阅读(30)  评论(0)    收藏  举报