사용자 도구

사이트 도구


java:crypt:rsa

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

다음 판
이전 판
java:crypt:rsa [2012/12/15 20:40]
kwon37xi 새로 만듦
java:crypt:rsa [2013/01/23 17:23] (현재)
kwon37xi [기본 암호화 복호화 예제]
줄 1: 줄 1:
 ====== Java RSA ====== ====== Java RSA ======
 +  * [[http://arstechnica.com/security/2010/01/768-bit-rsa-cracked-1024-bit-safe-for-now/|2010년 현재 RSA는 1024이상이 완전하다]]
 ===== 기본 암호화 복호화 예제 ===== ===== 기본 암호화 복호화 예제 =====
 +  * [[http://kwon37xi.egloos.com/4427199|RSA 기반 웹페이지 암호화 로그인]]
 TODO TODO
 +http://blog.kangwoo.kr/47
 +http://www.java2s.com/Tutorial/Java/0490__Security/BasicRSAexample.htm
 +
 +===== 암호화 복호화 데이터 길이 제한 =====
 +  * [[http://stackoverflow.com/questions/10007147/getting-a-illegalblocksizeexception-data-must-not-be-longer-than-256-bytes-when|java - getting a IllegalBlockSizeException: Data must not be longer than 256 bytes when using rsa]]
 +  * RSA는 기본적으로 **(Key bit수 / 8) - 11** 바이트만을 암호화 복호화 할 수 있다.
 +  * 즉, 키가 1024bit라면 ''(1024 / 8) - 11''의 결과인 117 바이트만 암호화 복호화 가능하다.
  
 ===== RSA 키를 저장했다가 복구하기 ===== ===== RSA 키를 저장했다가 복구하기 =====
 +RSA 키(public/private)을 hex 문자열로 만들어 저장했다가, hex 문자열에서 다시 키 객체를 생성할 수 있다.
 +
 +아래는 ''PublicKey'' 예이며, ''PrivateKey''는 ''RSAPrivateKeySpec''를 사용하면 된다.
 +
 +==== Key를 hex 문자열로 ====
 +<code java>
 +KeyPairGenerator generator = KeyPairGenerator.getInstance("RSA");
 +generator.initialize(1024);
 +
 +KeyPair keyPair = generator.generateKeyPair();
 +
 +PublicKey publicKey = keyPair.getPublic();
 +
 +KeyFactory keyFactory = KeyFactory.getInstance("RSA");
 +
 +RSAPublicKeySpec publicSpec = keyFactory.getKeySpec(publicKey, RSAPublicKeySpec.class);
 +
 +String publicKeyModulus = publicSpec.getModulus().toString(16);
 +String publicKeyExponent = publicSpec.getPublicExponent().toString(16);
 +</code>
 +
 +==== hex 문자열에서 Key로 ====
 +<code java>
 +BigInteger modulus = new BigInteger(publicKeyModuls, 16);
 +BigInteger exponent = new BigInteger(publicKeyExponent, 16);
 +RSAPublicKeySpec pubks = new RSAPublicKeySpec(modulus, exponent);
  
 +KeyFactory keyFactory = KeyFactory.getInstance("RSA");
  
 +PublicKey publicKey = keyFactory.generatePublic(pubks);
 +</code>
  
java/crypt/rsa.1355571618.txt.gz · 마지막으로 수정됨: 2012/12/15 20:40 저자 kwon37xi