2. keystore의 키로 인증서 파일 생성
3. 공개키암호화, 비밀키복호화 코드 작성
Keystore에 키 생성
D:\jks>keytool -genkey -alias test -keyalg RSA -keystore test.jks
keystore 암호를 입력하십시오:
새 암호를 다시 입력하십시오:
이름과 성을 입력하십시오.
[Unknown]: Beauty Kim
조직 단위 이름을 입력하십시오.
[Unknown]: Dev
조직 이름을 입력하십시오.
[Unknown]: MyCompany
구/군/시 이름을 입력하십시오?
[Unknown]: Seoul
시/도 이름을 입력하십시오.
[Unknown]: Seoul
이 조직의 두 자리 국가 코드를 입력하십시오.
[Unknown]: KR
CN=Beauty Kim, OU=Dev, O=MyCompany, L=Seoul, ST=Seoul, C=KR이(가) 맞습니까?
[아니오]: y
(keystore 암호와 같은 경우 Enter를 누르십시오):
인증서 파일 생성
D:\jks>keytool -export -alias test -keystore test.jks -file test.cer
keystore 암호를 입력하십시오:
인증서가
공개키암호화, 비밀키복호화 코드
package jca.test;
import java.io.FileInputStream;
import java.security.Key;
import java.security.KeyStore;
import java.security.PublicKey;
import java.security.cert.Certificate;
import javax.crypto.Cipher;
import org.junit.Test;
import com.lowagie.text.pdf.codec.Base64;
public class KeyStoreTest {
@Test
public void testKeyStore() throws Exception {
KeyStore keyStore = KeyStore.getInstance("JKS");
char[] password = "changeit".toCharArray();
FileInputStream in = null;
try {
in = new FileInputStream("d:/jks/test.jks");
keyStore.load(in, password);
} finally {
if(in != null) {
in.close();
}
}
byte[] data = "this is sample data".getBytes("utf8");
Certificate certificate = keyStore.getCertificate("test");
System.out.println("certificate: ");
System.out.println(certificate);
PublicKey publicKey = certificate.getPublicKey();
Key key = keyStore.getKey("test", "changeit".toCharArray());
System.out.println("key");
System.out.println(key);
Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");
cipher.init(Cipher.ENCRYPT_MODE, publicKey);
byte[] cipherText = cipher.doFinal(data);
System.out.println("cipher text length: " + cipherText.length);
System.out.println("cipher text: " + Base64.encodeBytes(cipherText));
cipher.init(Cipher.DECRYPT_MODE, key);
byte[] result = cipher.doFinal(cipherText);
System.out.println("result: " + new String(result));
}
}
댓글 없음:
댓글 쓰기