문서의 선택한 두 판 사이의 차이를 보여줍니다.
양쪽 이전 판 이전 판 다음 판 | 이전 판 | ||
java:crypt:rsa [2012/12/15 21:17] kwon37xi [기본 암호화 복호화 예제] |
java:crypt:rsa [2013/01/23 17:23] (현재) kwon37xi [기본 암호화 복호화 예제] |
||
---|---|---|---|
줄 1: | 줄 1: | ||
====== Java RSA ====== | ====== Java RSA ====== | ||
+ | * [[http:// | ||
===== 기본 암호화 복호화 예제 ===== | ===== 기본 암호화 복호화 예제 ===== | ||
+ | * [[http:// | ||
TODO | TODO | ||
http:// | http:// | ||
http:// | http:// | ||
+ | |||
+ | ===== 암호화 복호화 데이터 길이 제한 ===== | ||
+ | * [[http:// | ||
+ | * RSA는 기본적으로 **(Key bit수 / 8) - 11** 바이트만을 암호화 복호화 할 수 있다. | ||
+ | * 즉, 키가 1024bit라면 '' | ||
+ | |||
===== RSA 키를 저장했다가 복구하기 ===== | ===== RSA 키를 저장했다가 복구하기 ===== | ||
+ | RSA 키(public/ | ||
+ | |||
+ | 아래는 '' | ||
+ | |||
+ | ==== Key를 hex 문자열로 ==== | ||
+ | <code java> | ||
+ | KeyPairGenerator generator = KeyPairGenerator.getInstance(" | ||
+ | generator.initialize(1024); | ||
+ | |||
+ | KeyPair keyPair = generator.generateKeyPair(); | ||
+ | |||
+ | PublicKey publicKey = keyPair.getPublic(); | ||
+ | |||
+ | KeyFactory keyFactory = KeyFactory.getInstance(" | ||
+ | |||
+ | RSAPublicKeySpec publicSpec = keyFactory.getKeySpec(publicKey, | ||
+ | |||
+ | String publicKeyModulus = publicSpec.getModulus().toString(16); | ||
+ | String publicKeyExponent = publicSpec.getPublicExponent().toString(16); | ||
+ | </ | ||
+ | |||
+ | ==== hex 문자열에서 Key로 ==== | ||
+ | <code java> | ||
+ | BigInteger modulus = new BigInteger(publicKeyModuls, | ||
+ | BigInteger exponent = new BigInteger(publicKeyExponent, | ||
+ | RSAPublicKeySpec pubks = new RSAPublicKeySpec(modulus, | ||
+ | KeyFactory keyFactory = KeyFactory.getInstance(" | ||
+ | PublicKey publicKey = keyFactory.generatePublic(pubks); | ||
+ | </ | ||