자바(Java)

자바 aes 암호화 복호화 예제

xemaker 2019. 12. 9. 16:00
package asdfasds;

 

import java.io.UnsupportedEncodingException;

import java.security.InvalidAlgorithmParameterException;

import java.security.InvalidKeyException;

import java.security.Key;

import java.security.NoSuchAlgorithmException;

 

import javax.crypto.BadPaddingException;

import javax.crypto.Cipher;

import javax.crypto.IllegalBlockSizeException;

import javax.crypto.NoSuchPaddingException;

import javax.crypto.spec.IvParameterSpec;

import javax.crypto.spec.SecretKeySpec;

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

 

public class AES128 {

    private String ips;

    private Key keySpec;

 

    public AES128(String key) {

        try {

            byte[] keyBytes = new byte[16];

            byte[] b = key.getBytes("UTF-8");

            System.arraycopy(b, 0, keyBytes, 0, keyBytes.length);

            SecretKeySpec keySpec = new SecretKeySpec(keyBytes, "AES");

            this.ips = key.substring(0, 16);

            this.keySpec = keySpec;

        } catch (UnsupportedEncodingException e) {

            e.printStackTrace();

        }

    }

 

    public String encrypt(String str) {

        Cipher cipher;

        try {

            cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");

            cipher.init(Cipher.ENCRYPT_MODE, keySpec,

                    new IvParameterSpec(ips.getBytes()));

 

            byte[] encrypted = cipher.doFinal(str.getBytes("UTF-8"));

            String Str = new String(Base64.encodeBase64(encrypted));

 

            return Str;

        } catch (NoSuchAlgorithmException | NoSuchPaddingException

                | InvalidKeyException | InvalidAlgorithmParameterException

                | IllegalBlockSizeException | BadPaddingException

                | UnsupportedEncodingException e) {

            e.printStackTrace();

        }

        return null;

    }

 

    public String decrypt(String str) {

        try {

            Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");

            cipher.init(Cipher.DECRYPT_MODE, keySpec,

                    new IvParameterSpec(ips.getBytes("UTF-8")));

 

            byte[] byteStr = Base64.decodeBase64(str.getBytes());

            String Str = new String(cipher.doFinal(byteStr), "UTF-8");

 

            return Str;

        } catch (NoSuchAlgorithmException | NoSuchPaddingException

                | InvalidKeyException | InvalidAlgorithmParameterException

                | IllegalBlockSizeException | BadPaddingException

                | UnsupportedEncodingException e) {

            e.printStackTrace();

        }

        return null;

    }

}



출처: https://boxfoxs.tistory.com/270 [박스여우 - BoxFox]