AES 암복호화 구현 클래스 입니다.

암호문생성은 aesEncode, 복호화는 aesDecode 함수를 호출하면 됩니다

 

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 AESUtil {

/*

parameter :

      str - 원문

      key - 키값

*/
    public static String aesEncode(String str, String key) throws UnsupportedEncodingException, NoSuchAlgorithmException, NoSuchPaddingException, InvalidKeyException, InvalidAlgorithmParameterException, IllegalBlockSizeException, BadPaddingException {
        String iv = key.substring(0, 16);
        byte[] keyBytes = new byte[16];
        byte[] b = key.getBytes("UTF-8");
        int len = b.length;
        if (len > keyBytes.length) {
            len = keyBytes.length;
        }
        System.arraycopy(b, 0, keyBytes, 0, len);
        SecretKeySpec keySpec = new SecretKeySpec(keyBytes, "AES");
        Cipher c = Cipher.getInstance("AES/CBC/PKCS5Padding");
        c.init(1, (Key)keySpec, new IvParameterSpec(iv.getBytes()));
        byte[] encrypted = c.doFinal(str.getBytes("UTF-8"));
        String enStr = new String(Base64.encodeBase64((byte[])encrypted));
        return enStr;
    }


    /*

    parameter :

      str - 암호문 (BASE64)

      key - 키값

   */


    public static String aesDecode(String str, String key) throws UnsupportedEncodingException, NoSuchAlgorithmException, NoSuchPaddingException, InvalidKeyException, InvalidAlgorithmParameterException, IllegalBlockSizeException, BadPaddingException {
        String iv = key.substring(0, 16);
        byte[] keyBytes = new byte[16];
        byte[] b = key.getBytes("UTF-8");
        int len = b.length;
        if (len > keyBytes.length) {
            len = keyBytes.length;
        }
        System.arraycopy(b, 0, keyBytes, 0, len);
        SecretKeySpec keySpec = new SecretKeySpec(keyBytes, "AES");
        Cipher c = Cipher.getInstance("AES/CBC/PKCS5Padding");
        c.init(2, (Key)keySpec, new IvParameterSpec(iv.getBytes("UTF-8")));
        byte[] byteStr = Base64.decodeBase64((byte[])str.getBytes());
        return new String(c.doFinal(byteStr), "UTF-8");
    }
}

 

https://link.coupang.com/a/Ne1xR

 

LG전자 톤프리 돌비 애트모스 무선 블루투스 이어폰

COUPANG

www.coupang.com

이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.

AND

/*

Byte[] 이미지데이타를 png 이미지 파일

*/

ByteArrayInputStream input_stream= new ByteArrayInputStream(imgByte);

BufferedImage final_buffered_image = ImageIO.read(input_stream);

ImageIO.write(final_buffered_image , "png", new File("./temp.png") );

AND

public static void sort(File[] filterResult) {

   // 파일명으로 정렬한다. 

    Arrays.sort(filterResult, new Comparator() {

         public int compare(Object arg0, Object arg1) {

               File file1 = (File)arg0;

               File file2 = (File)arg1;

               return file1.getName().compareToIgnoreCase(file2.getName());

         }

   });

}

 

사용예시 : 특정 폴더의 파일명으로 정렬하여 화면에 출력


String   strFileDir = "/temp/";
File dirFile=new File(strFileDir);
File[] fileList=dirFile.listFiles();

if (fileList != null)
{

   sort(fileList);

  for(File tempFile : fileList) {
      if(tempFile.isFile()) {
         String tempFileName=tempFile.getName();
         System.out.println(tempFileName)
      }
     }

}

AND

/*

자바 random UUID 생성 후 반환 함수

*/

 

public static String getUUID()
{
   return UUID.randomUUID().toString();
}

AND

/*

HTTP Request 쿼리 스트링 모두를 로그로 출력하는 함수

*/

public static void pageDebugging(Logger log, HttpServletRequest req) {

StringBuffer requestURL = req.getRequestURL();

String queryString = req.getQueryString();

log.info("Page Path : " + requestURL.toString() + " Query : " + queryString);

Enumeration params = req.getParameterNames();

while (params.hasMoreElements()) {

String paramName = (String)params.nextElement();

log.info(String.valueOf(paramName) + " = " + req.getParameter(paramName));

}

}

AND