다음은 모듈 및 공개 지수에서 RSAPublicKey
구현을 만드는 예제입니다.
KeyFactory factory rsa = KeyFactory.getInstance("RSA");
BigInteger n = ... ; /* modulus */
BigInteger e = ... ; /* public exponent */
RSAPublicKeySpec spec = new RSAPublicKeySpec(n, e);
RSAPublicKey pub = (RSAPublicKey) factory.generatePublic(spec);
Cipher enc = Cipher.getInstance("RSA");
enc.init(Cipher.WRAP_MODE, pub);
byte[] encryptedContentKey = enc.wrap(secret);
RSA 키 쌍 BigInteger
객체의 형태로 여러 숫자를 포함하는 각각의 개인 키 및 공개 키이다. 한 쌍의 각 키는 동일한 "모듈"을 공유합니다. 공개 키에는 "공개 지수"가 있고 개인 키에는 "개인 지수"가 있습니다. 계산 효율성을 위해 개인 키는 일반적으로 "중국어 잉여 정리 형식"으로 저장되며 추가 숫자가 포함됩니다.
암호화하는 경우 PublicKey
을 의 init()
방법으로 전달해야합니다.
해독하는 경우 Cipher
의 init()
방법으로 PrivateKey
을 전달해야합니다.
합니다 (
Signature
클래스는 더 명확하게 의도를 표현 할 때 일부 제공 업체는 사용자가 키를 반대 할 때 서명 작업을 수행하고 올바른 패딩을 사용하기 위해
Cipher
을 사용할 수 있지만, 이것은 필요 권장하거나하지 않습니다.)
예, 가능합니다. –
사과 - 질문에 대한 자세한 내용을 추가했습니다. – Joseph
물론, 'Key'는 'BigInteger'가 아니므로 캐스팅 할 수 없습니다. Java에서의 캐스트는 변환 연산자가 아닙니다 (기본 유형 제외). 여러분은 인스턴스화하고자하는'Key '를 구현하는 정확한 구체적인 클래스를 알아야 할 것입니다. 이것은 아마도 여러분의 연구의 시작일 것입니다. –