티스토리 뷰

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]
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함