Java的AES加密解密详解编程语言

import javax.crypto.Cipher; 
import javax.crypto.spec.IvParameterSpec; 
import javax.crypto.spec.SecretKeySpec; 
 
import org.junit.Test; 
 
... 
 
    @Test 
    public void testCrossLanguageEncrypt() throws Exception{ 
        System.out.println(encrypt()); 
        System.out.println(desEncrypt()); 
    } 
 
    public static String encrypt() throws Exception { 
        try { 
            String data = "Test String"; 
            String key = "1234567812345678"; 
            String iv = "1234567812345678"; 
            Cipher cipher = Cipher.getInstance("AES/CBC/NoPadding"); 
            int blockSize = cipher.getBlockSize(); 
            byte[] dataBytes = data.getBytes(); 
            int plaintextLength = dataBytes.length; 
            if (plaintextLength % blockSize != 0) { 
                plaintextLength = plaintextLength + (blockSize - (plaintextLength % blockSize)); 
            } 
            byte[] plaintext = new byte[plaintextLength]; 
            System.arraycopy(dataBytes, 0, plaintext, 0, dataBytes.length); 
 
            SecretKeySpec keyspec = new SecretKeySpec(key.getBytes(), "AES"); 
            IvParameterSpec ivspec = new IvParameterSpec(iv.getBytes()); 
            cipher.init(Cipher.ENCRYPT_MODE, keyspec, ivspec); 
            byte[] encrypted = cipher.doFinal(plaintext); 
            return new sun.misc.BASE64Encoder().encode(encrypted); 
        } catch (Exception e) { 
            e.printStackTrace(); 
            return null; 
        } 
    } 
    public static String desEncrypt() throws Exception { 
        try 
        { 
            String data = "2fbwW9+8vPId2/foafZq6Q=="; 
            String key = "1234567812345678"; 
            String iv = "1234567812345678"; 
 
            byte[] encrypted1 = new sun.misc.BASE64Decoder().decodeBuffer(data); 
 
            Cipher cipher = Cipher.getInstance("AES/CBC/NoPadding"); 
            SecretKeySpec keyspec = new SecretKeySpec(key.getBytes(), "AES"); 
            IvParameterSpec ivspec = new IvParameterSpec(iv.getBytes()); 
 
            cipher.init(Cipher.DECRYPT_MODE, keyspec, ivspec); 
            byte[] original = cipher.doFinal(encrypted1); 
            String originalString = new String(original); 
            return originalString; 
        } 
        catch (Exception e) { 
            e.printStackTrace(); 
            return null; 
        } 
    }

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/10551.html

(0)
上一篇 2021年7月19日 10:19
下一篇 2021年7月19日 10:19

相关推荐

发表回复

登录后才能评论