์ด ๋ ํ์งํ ๋ฆฌ์๋ํด์ ๊ณต๋ถํ๊ณ ์ ๋ฆฌํ ๋ด์ฉ์ ์ ๋ธ๋ก๊ทธ์ ๋๋ฌ์ค์๋ฉด ์ ๋ฆฌ ๋ผ ์์ต๋๋ค ใ
ใ
openssl genrsa -out private_key.pem 2048
โ ์ฐ์ BEGIN RSA PRIVATE KEY ๋ก ์์ํ๋ ํค๋ฅผ ์์ฑํฉ๋๋ค.
openssl pkcs8 -topk8 -inform PEM -in private_key.pem -out rsa_private_key.pem -nocrypt
openssl rsa -in private_key.pem -pubout -out public_key.pem
KeyPairGenerator generator = KeyPairGenerator.getInstance("RSA");
generator.initialize(2048);
KeyPair pair = generator.generateKeyPair();
๋ค์ํค๋ก ๊ณต๊ฐํค์ ๊ฐ์ธํค ์ถ์ถ
PrivateKey privateKey = pair.getPrivate();
PublicKey publicKey = pair.getPublic();
ํค๋ฅผ ํ์ผ๋ก ๊ด๋ฆฌํ๊ณ ์ถ์๋ ํ์ผ์ ํค๋ฅผ ์ ์ฅํ๋ ค๋ฉด ๊ธฐ๋ณธ ์ธ์ฝ๋ฉ ํ์์ผ๋ก ํค ์ฝํ ์ธ ๋ฅผ ๋ฐํํ๋ getEncoded ๋ฉ์๋๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
try (FileOutputStream fos = new FileOutputStream("public.key")) {
fos.write(publicKey.getEncoded());
}
ํ์ผ์์ ํค๋ฅผ ์ฝ์ผ๋ ค๋ฉด ๋จผ์ ๋ด์ฉ์ ๋ฐ์ดํธ ๋ฐฐ์ด๋ก ๋ก๋ํด์ผํฉ๋๋ค
File publicKeyFile = new File("public.key");
byte[] publicKeyBytes = Files.readAllBytes(publicKeyFile.toPath());
๊ทธ๋ฐ ๋ค์ KeyFactory ๋ฅผ ์ฌ์ฉํ์ฌ ์ค์ ์ธ์คํด์ค๋ฅผ ๋ค์ ๋ง๋ญ๋๋ค.
KeyFactory keyFactory = KeyFactory.getInstance("RSA");
EncodedKeySpec publicKeySpec = new X509EncodedKeySpec(publicKeyBytes);
keyFactory.generatePublic(publicKeySpec);