RSA 비공개 공개 키를 저장해야합니다. 여기 그것을 만듭니다.Android RSA 비공개 공개 키 저장
KeyPairGenerator kpg = KeyPairGenerator.getInstance("RSA");
kpg.initialize(1024);
KeyPair kp = kpg.genKeyPair();
publicKey = kp.getPublic();
privateKey = kp.getPrivate();
이제 다음 번에 두 키를 모두 사용하고 싶습니다. 따라서 장치에 저장해야합니다.
byte[] publicKeyBytes = publicKey.getEncoded();
byte[] privateKeyBytes = privateKey.getEncoded();
그럼 바이트 배열을 가져 와서 텍스트 파일로 저장할 수 있습니다. 다음 번에 그것을 읽고 바이트 배열로 다시 변환합니다.
이제 내 질문 : 어떻게 다시 바이트 배열을 키로 변환 할 수 있습니까?
이 정말 작동하지 않습니다
로그 캣에KeyFactory keyFactory = KeyFactory.getInstance("RSA");
X509EncodedKeySpec spec = new X509EncodedKeySpec(publicKeyBytes);
publicKey = keyFactory.generatePublic(spec);
spec = new X509EncodedKeySpec(privateKeyBytes);
privateKey = keyFactory.generatePrivate(spec);
는,이 표시 될 것입니다 :
RSAPublicKeySpec 또는 PKCS8EncodedKeySpec를 사용해야합니다; 는 java.security.spec.X509EncodedKeySpec
이 코드에는 어떤 문제가 있습니까?
도움 주셔서 감사합니다.
내 대답이 업데이트되었습니다. – jHilscher
나는 그것을 검증하지는 않았지만 공개 키에 대한'X509EncodedKeySpec'이 정확하다고 믿습니다. –
감사합니다. JHilscher, 작동하지 않습니다! - 그렇습니다. GregS는 공개 키에 X509EncodedKeySpec을, 개인 키에 PKCS8EncodedKeySpec을 사용합니다. – NewDeveloper