2009-08-06 8 views
1

RSA를 사용하여 문자열의 암호를 해독하려고합니다. 그것은 C#에서 아이폰에 암호화되어 있고 개인 키가 있습니다. 이것은 어리석은 문제처럼 보이지만, 내가 본 모든 예제는 개인 키를 생성하는 것으로 나타납니다. 개인 키가 있습니다 (16 진수의 바이트 []). 그것은 PKCS # 1 패딩을 사용합니다. 내가하는 방법을 이해할 수없는 부분은 이미 가지고있는 개인 키로 java.security.Key 개체를 만드는 것입니다.RSA decrypt with Java

나에게 개인 키를 2 부분으로 제공해야합니까? 모듈 및 지수?

미리 감사드립니다.

+0

우리는 더 많은 정보가 필요합니다. 키를 표현할 수있는 방법이 많이 있습니다. DER? PEM? PKCS # 8? –

+0

그것은 PKCS # 1 패딩을 사용하고 있습니다 ... 그것은 Cipher 인스턴스를 변경해야합니다. 그렇습니까? –

+0

또한, 개인 키 자체가 암호화 될 수도 있습니다 (이것은 매우 일반적입니다).이 경우 암호화 알고리즘과 암호를 알아야합니다. –

답변

2

RSAPrivateKeySpec을 통과해야합니다. 예는 다음과 같습니다 (this 기준) :

 BigInteger n = new BigInteger(nBytes); 
     BigInteger p = new BigInteger(pBytes); 
     RSAPrivateKeySpec privateSpec = new RSAPrivateKeySpec(n, p); 
     KeyFactory kf = KeyFactory.getInstance("RSA"); 
     Key privateKey = kf.generatePrivate(privateSpec); 
+0

내 문제는 내가 16 진수의 바이트 배열로 개인 키를 받았다는 것 ... 0x12, 0xe3 등입니다. 해결책은 모듈과 지수가 필요하다는 것입니다. –

+0

사실, 연결된 라이브러리의 SshRsaPrivateKey에 적절한 생성자가있는 것처럼 보입니다. http://www.codase.com/search/display?file=L2dlbnRvbzIvdmFyL3RtcC9yZXBvcy9zb3VyY2Vmb3JnZS9zc2h0b29scy9qMnNzaC0wXzJfNy1zcmNfemlwL2oyc3NoL3NyYy9jb20vc3NodG9vbHMvajJzc2gvdHJhbnNwb3J0L3B1YmxpY2tleS9yc2EvU3NoUnNhUHJpdmF0ZUtleS5qYXZh&lang=java&off=2719+2746+ –

+0

그래서, 그렇습니다 ... 나는 그것을 시도 줄 것이다. 도움 메러디스와 로렌스 주셔서 감사합니다. –