java加密解密

发布时间 2023-10-25 10:48:13作者: csjoz11
package com.pg;

import com.pg.utils.CommonUtils;
import com.sun.org.apache.xerces.internal.impl.dv.util.Base64;
import javax.crypto.BadPaddingException;
import javax.crypto.Cipher;
import javax.crypto.IllegalBlockSizeException;
import javax.crypto.NoSuchPaddingException;
import javax.crypto.spec.SecretKeySpec;
import java.nio.charset.StandardCharsets;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
 
 
public class desOrAesDemo {
    public static void main(String[] args) throws Exception {
        String text = "13211112222";
 
        String key = "12345678";//des必须8字节
        // 算法/模式/填充  默认 DES/ECB/PKCS5Padding
        String transformation = "DES";
 
        String key1 = "1234567812345678";//aes必须16字节
        String transformation1 = "AES";
 
        String key2 = "123456781234567812345678";//TripleDES使用24字节的key
        String transformation2 = "TripleDes";

        String extracted = CommonUtils.extracted(text, key, transformation, true);
        System.out.println("DES加密:" + extracted);
        String extracted1 = CommonUtils.extracted(extracted, key, transformation, false);
        System.out.println("解密:" + extracted1);
 
//        String extracted = extracted(text, key, transformation, true);
//        System.out.println("DES加密:" + extracted);
//        String extracted1 = extracted(extracted, key, transformation, false);
//        System.out.println("解密:" + extracted1);
 
 
//        String extracted2 = extracted(text, key1, transformation1, true);
//        System.out.println("AES加密:" + extracted2);
//        String extracted3 = extracted(extracted2, key1, transformation1, false);
//        System.out.println("解密:" + extracted3);
//
//        String extracted4 = extracted(text, key2, transformation2, true);
//        System.out.println("Triple Des加密:" + extracted4);
//        String extracted5 = extracted(extracted, key2, transformation2, false);
//        System.out.println("解密:" + extracted5);
    }
 
    /**
     * @param text           明文/base64密文
     * @param key            密钥
     * @param transformation 转换方式
     * @param mode           加密/解密
     */
//    private static String extracted(String text, String key, String transformation, boolean mode) throws NoSuchAlgorithmException, NoSuchPaddingException, InvalidKeyException, IllegalBlockSizeException, BadPaddingException {
//        Cipher cipher = Cipher.getInstance(transformation);
//        //    key          与给定的密钥内容相关联的密钥算法的名称
//        SecretKeySpec secretKeySpec = new SecretKeySpec(key.getBytes(), transformation);
//        //Cipher 的操作模式,加密模式:ENCRYPT_MODE、 解密模式:DECRYPT_MODE、包装模式:WRAP_MODE 或 解包装:UNWRAP_MODE)
//        cipher.init(mode ? Cipher.ENCRYPT_MODE : Cipher.DECRYPT_MODE, secretKeySpec);
//        byte[] bytes = cipher.doFinal(mode ? text.getBytes(StandardCharsets.UTF_8) : Base64.decode(text));
//        return mode ? Base64.encode(bytes) : new String(bytes);
//    }
 
 
}