Created
June 18, 2019 06:14
-
-
Save dantory/a6f1ac795b3d1a34eab3009819e44f57 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # 테스트 용도로 하나의 파일에 모두 작성하였습니다. | |
| import org.apache.commons.codec.binary.Base64; | |
| 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 java.nio.charset.StandardCharsets; | |
| import java.security.InvalidAlgorithmParameterException; | |
| import java.security.InvalidKeyException; | |
| import java.security.NoSuchAlgorithmException; | |
| import java.security.spec.AlgorithmParameterSpec; | |
| /** | |
| * 암호화 클래스 | |
| */ | |
| class AES256Util { | |
| // public static byte[] ivBytes = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; | |
| public static byte[] ivBytes = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; | |
| // public static byte[] ivBytes = { 1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4 }; | |
| public static String aes_encode(String str, String key) throws NoSuchAlgorithmException, NoSuchPaddingException, InvalidKeyException, InvalidAlgorithmParameterException, IllegalBlockSizeException, BadPaddingException { | |
| byte[] textBytes = str.getBytes(StandardCharsets.UTF_8); | |
| AlgorithmParameterSpec ivSpec = new IvParameterSpec(ivBytes); | |
| SecretKeySpec newKey = new SecretKeySpec(key.getBytes(StandardCharsets.UTF_8), "AES"); | |
| Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding"); | |
| cipher.init(Cipher.ENCRYPT_MODE, newKey, ivSpec); | |
| return Base64.encodeBase64String(cipher.doFinal(textBytes)); | |
| } | |
| public static String aes_decode(String str, String key) throws NoSuchAlgorithmException, NoSuchPaddingException, InvalidKeyException, InvalidAlgorithmParameterException, IllegalBlockSizeException, BadPaddingException { | |
| byte[] textBytes = Base64.decodeBase64(str); | |
| //byte[] textBytes = str.getBytes("UTF-8"); | |
| AlgorithmParameterSpec ivSpec = new IvParameterSpec(ivBytes); | |
| SecretKeySpec newKey = new SecretKeySpec(key.getBytes(StandardCharsets.UTF_8), "AES"); | |
| Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding"); | |
| cipher.init(Cipher.DECRYPT_MODE, newKey, ivSpec); | |
| return new String(cipher.doFinal(textBytes), StandardCharsets.UTF_8); | |
| } | |
| } | |
| /** | |
| * 암호화 테스트 코드 | |
| */ | |
| public class TestClass { | |
| public static final String plain_text = "안녕하세요 HelloWorld"; | |
| public static final String secret_key = "fakecodingsecretfakecodingsecret"; | |
| public static void main(String[] args) { | |
| try { | |
| String encrypt_text = AES256Util.aes_encode(plain_text, secret_key); | |
| String decrypt_text = AES256Util.aes_decode(encrypt_text, secret_key); | |
| System.out.println(encrypt_text); | |
| System.out.println(decrypt_text); | |
| } catch (NoSuchAlgorithmException | NoSuchPaddingException | InvalidKeyException | InvalidAlgorithmParameterException | IllegalBlockSizeException | BadPaddingException e) { | |
| e.printStackTrace(); | |
| } | |
| } | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment