RSA란?
- 현재 SSL/TLS에 가장 많이 사용되는 공개키 암호화 알고리즘
- 공개키와 개인키가 한 쌍을 이룬다
- 공개키로 암호화한 내용은 개인키로, 개인키로 암호화한 내용은 공개키로 해독
- RSA 공개키 암호화 방식은 AES 대칭키 암호화 방식에 비해 속도가 느린 단점이 있으나, 보안에 더 강점을 갖는다
Java에서 key 생성 및 바이너리 파일 저장
package com.test.util;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.security.*;
import java.util.Base64;
public class RSAUtill {
public static void main(String[] args) throws Exception {
generateRsaKeyPair();
}
/**
* RSA 키쌍 (private key, public key) 생성
*/
private static void generateRsaKeyPair() throws NoSuchAlgorithmException {
// RSA 키쌍을 생성
KeyPairGenerator generator = KeyPairGenerator.getInstance("RSA");
generator.initialize(2048);
KeyPair pair = generator.generateKeyPair();
// publicKey 획득
PublicKey publicKey = pair.getPublic();
System.out.printf("-----BEGIN PUBLIC KEY-----\n%s\n-----END PUBLIC KEY-----\n",
Base64.getEncoder().encodeToString(publicKey.getEncoded()));
// publicKey 바이너리 파일로 저장
try (FileOutputStream fos = new FileOutputStream("public.key")) {
fos.write(publicKey.getEncoded());
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
// privateKey 획득
PrivateKey privateKey = pair.getPrivate();
System.out.printf("-----BEGIN PRIVATE KEY-----\n%s\n-----END PRIVATE KEY-----\n",
Base64.getEncoder().encodeToString(privateKey.getEncoded()));
// privateKey 바이너리 파일로 저장
try (FileOutputStream fos = new FileOutputStream("private.key")) {
fos.write(privateKey.getEncoded());
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
- base64 encoding key 출력 확인
- key 파일 생성 확인
RSA Key 생성 사이트
http://tomorrow99.woobi.co.kr/en/teacher/interactives/rsa-key-generator/
'Programming > Back-End' 카테고리의 다른 글
[Java/자바] JWT 토큰 발급 및 JWT/JWK 검증 처리 방법 정리 (1) | 2023.09.01 |
---|---|
[SpringBoot] Embedded Tomcat의 catalina.jar (0) | 2023.09.01 |
[Java/자바] URLencode와 Base64url 차이점 (0) | 2023.08.30 |
[Java/자바] 한글 문자열 URL 인코딩(encode)/디코딩(decode) 하기 (35) | 2023.08.30 |
[Spring] mybatis insert 쿼리 실행 후 pk 리턴값 받기 (35) | 2023.08.24 |