Java

[AES 256] crypto Cipher 사용하기

import java.security.InvalidAlgorithmParameterException;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import java.security.spec.AlgorithmParameterSpec;

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;

public class AES256Cipher {

     public static byte[] ivBytes = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
     public static String secretKey = “@ekffufkTlduabcree&&aoao”; //AES only supports key sizes of 16, 24 or 32 bytes… So you have to change your EncryptionKey.

     //AES256 암호화
     public static String Encode(String str) throws java.io.UnsupportedEncodingException, NoSuchAlgorithmException,       NoSuchPaddingException, InvalidKeyException, InvalidAlgorithmParameterException, IllegalBlockSizeException,           BadPaddingException {

       byte[] textBytes = str.getBytes(“UTF-8”);
       AlgorithmParameterSpec ivSpec = new IvParameterSpec(ivBytes);
       SecretKeySpec newKey = new SecretKeySpec(secretKey.getBytes(“UTF-8”), “AES”);
       Cipher cipher = null;
       cipher = Cipher.getInstance(“AES/CBC/PKCS5Padding”);
       cipher.init(Cipher.ENCRYPT_MODE, newKey, ivSpec);

     return Base64.encodeToString(cipher.doFinal(textBytes), 0);
     }

   //AES256 복호화
   public static String Decode(String str) throws java.io.UnsupportedEncodingException, NoSuchAlgorithmException,       NoSuchPaddingException, InvalidKeyException, InvalidAlgorithmParameterException, IllegalBlockSizeException,           BadPaddingException {

     byte[] textBytes =Base64.decode(str,0);
     //byte[] textBytes = str.getBytes(“UTF-8”);
     AlgorithmParameterSpec ivSpec = new IvParameterSpec(ivBytes);
     SecretKeySpec newKey = new SecretKeySpec(secretKey.getBytes(“UTF-8”), “AES”);
     Cipher cipher = Cipher.getInstance(“AES/CBC/PKCS5Padding”);
     cipher.init(Cipher.DECRYPT_MODE, newKey, ivSpec);
   return new String(cipher.doFinal(textBytes), “UTF-8”);
   }
}

 

[사용예시]
(AES256Cipher.Decode(“sdfslkjflk23u459ousdfjklfjsdlkfjsdlkfsdf”
AES256Cipher.Encode(“test”)

Leave a Reply

error: Content is protected !!