728x90
반응형
RSA 개인키 PEM문자열을 PrivateKey 객체로 변환할 때 exception이 났다.
java.security.spec.InvalidKeySpecException: java.security.InvalidKeyException: IOException : algid parse error, not a sequence
//PKCS#8 privateKey
PKCS8EncodedKeySpec keySpec = new PKCS8EncodedKeySpec(encoded);
KeyFactory kf = KeyFactory.getInstance("RSA");
PrivateKey prkey = kf.generatePrivate(keySpec);
(위 코드를 사용 했는데, exception을 내뱉음)
원인은 pem문자열이 pkcs#8형식으로 만들어지지 않았기 때문이었다.
내가받은 pem 문자열은 pkcs#1형식이었어서 PKCS8EncodedKeySpec으로 keySpec을 얻은 후 privateKey를 얻으려고하면 오류가 나는 것이다.
해결 방법(PrivateKey를 얻으려면)은 pkcs#1형식의 pem 문자열을 pcks#8 형식의 pem 문자열로 보내달라고 하거나, pkcs#1의 keySpec을 얻을 수 있는 bouncyCastle 라이브러리를 사용해야한다. (bouncyCastle 라이브러리를 사용하지 않아도 얻을 수 있는 방법이 있지만, 매우 복잡하다....)
pem 문자열을 보고 이것이 pkcs#8 방식인지 pkcs#1방식인지 알아보려면 앞에 시작하는 문자열을 보면된다.
pkcs#8
-----BEGIN PRIVATE KEY-----
.....
.....
-----END PRIVATE KEY-----
pkcs#1
-----BEGIN RSA PRIVATE KEY-----
....
....
-----END RSA PRIVATE KEY-----
728x90
반응형
'프로그래밍 노트 > 트러블슈팅' 카테고리의 다른 글
[Mybatis] 동적 쿼리 DBMS별 Like 문 (0) | 2019.07.12 |
---|---|
[Maven] error resolving version for plugin from the repositories ... 오류 (0) | 2019.03.26 |
AES256 암호화시 java.security.InvalidKeyException: Illegal key size 해결방안 (3) | 2019.03.06 |
[JAVA] Jar안에 있는 resource 파일 읽기(classPath) (2) | 2018.07.16 |
[SVN] Working copy is not up-to-date 해결 (0) | 2018.06.18 |