본문 바로가기
프로그램/자바

자바 랜덤 API 암호화 BASE64 KEY 생성

by cbwstar 2022. 1. 13.
728x90
반응형
package egovframework.util; import org.apache.commons.codec.binary.Base64; import javax.crypto.KeyGenerator; import javax.crypto.SecretKey; import javax.xml.bind.DatatypeConverter; import java.security.NoSuchAlgorithmException; import java.security.SecureRandom; public class RandomAESKeyGen { ​​​​public static String generate(final int keyLen) throws NoSuchAlgorithmException { ​​​​​​​​KeyGenerator keyGen = KeyGenerator.getInstance("AES"); ​​​​​​​​keyGen.init(keyLen); ​​​​​​​​SecretKey secretKey = keyGen.generateKey(); ​​​​​​​​byte[] encoded = secretKey.getEncoded(); ​​​​​​​​return DatatypeConverter.printHexBinary(encoded).toLowerCase(); ​​​​} ​​​​public static String generate2(final int keyLen) throws NoSuchAlgorithmException { ​​​​​​​​SecureRandom random = new SecureRandom(); ​​​​​​​​byte bytes[] = new byte[keyLen/8]; ​​​​​​​​random.nextBytes(bytes); ​​​​​​​​return DatatypeConverter.printHexBinary(bytes).toLowerCase(); ​​​​} ​​​​public static String generateBase64(final int keyLen) throws NoSuchAlgorithmException { ​​​​​​​​KeyGenerator keyGen = KeyGenerator.getInstance("AES"); ​​​​​​​​keyGen.init(keyLen); ​​​​​​​​SecretKey secretKey = keyGen.generateKey(); ​​​​​​​​byte[] encoded = secretKey.getEncoded(); ​​​​​​​​String key = DatatypeConverter.printHexBinary(encoded).toLowerCase(); ​​​​​​​​byte[] base64Key = Base64.encodeBase64(key.getBytes()); ​​​​​​​​return new String(base64Key); ​​​​} ​​​​public static String generate2Base64(final int keyLen) throws NoSuchAlgorithmException { ​​​​​​​​SecureRandom random = new SecureRandom(); ​​​​​​​​byte bytes[] = new byte[keyLen/8]; ​​​​​​​​random.nextBytes(bytes); ​​​​​​​​String key = DatatypeConverter.printHexBinary(bytes).toLowerCase(); ​​​​​​​​byte[] base64Key = Base64.encodeBase64(key.getBytes()); ​​​​​​​​return new String(base64Key); ​​​​} ​​​​public static void main(String[] args) { ​​​​​​​​String key = null; ​​​​​​​​String result=""; ​​​​​​​​for(int i=0; i< 5; ++i) { ​​​​​​​​​​​​try { ​​​​​​​​​​​​​​​​key = RandomAESKeyGen.generateBase64(128); ​​​​​​​​​​​​} catch (NoSuchAlgorithmException e) { ​​​​​​​​​​​​​​​​System.out.println("Exception caught"); ​​​​​​​​​​​​​​​​e.printStackTrace(); ​​​​​​​​​​​​} ​​​​​​​​​​​​System.out.println("KeyGenerator 128 key 순번:[" + i + "]" + key); ​​​​​​​​} ​​​​​​​​System.out.println("=================="); ​​​​​​​​for(int i=0; i< 5; ++i) { ​​​​​​​​​​​​try { ​​​​​​​​​​​​​​​​key = RandomAESKeyGen.generateBase64(256); ​​​​​​​​​​​​} catch (NoSuchAlgorithmException e) { ​​​​​​​​​​​​​​​​System.out.println("Exception caught"); ​​​​​​​​​​​​​​​​e.printStackTrace(); ​​​​​​​​​​​​} ​​​​​​​​​​​​System.out.println("KeyGenerator 256key 순번:[" + i + "]" + key); ​​​​​​​​} ​​​​​​​​System.out.println("=================="); ​​​​​​​​for(int i=0; i< 5; ++i) { ​​​​​​​​​​​​try { ​​​​​​​​​​​​​​​​key = RandomAESKeyGen.generate2Base64(128); ​​​​​​​​​​​​} catch (NoSuchAlgorithmException e) { ​​​​​​​​​​​​​​​​System.out.println("Exception caught"); ​​​​​​​​​​​​​​​​e.printStackTrace(); ​​​​​​​​​​​​} ​​​​​​​​​​​​System.out.println("SecureRandom 128 key 순번:[" + i + "]" + key); ​​​​​​​​} ​​​​​​​​System.out.println("=================="); ​​​​​​​​for(int i=0; i< 5; ++i) { ​​​​​​​​​​​​try { ​​​​​​​​​​​​​​​​key = RandomAESKeyGen.generate2Base64(256); ​​​​​​​​​​​​} catch (NoSuchAlgorithmException e) { ​​​​​​​​​​​​​​​​System.out.println("Exception caught"); ​​​​​​​​​​​​​​​​e.printStackTrace(); ​​​​​​​​​​​​} ​​​​​​​​​​​​System.out.println("SecureRandom 256key 순번:[" + i + "]" + key); ​​​​​​​​} ​​​​} }
728x90
반응형


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