2013-04-05 3 views
3

나는 문제가있어 지난 이틀 동안 답을 찾는데 보냈다.OpenSSL Diffie Hellman DER 인코딩 (C 언어)

C에서 OpenSSL을 사용하여 DH 객체를 생성했는데 (더 구체적인 Objective-C이지만 그런 식으로 생각하지 않습니다) 이제 Bignums 인 p, q 및 publickey 값에 액세스 할 수 있습니다. 이 값을 ASN.1 DER 인코딩으로 서버에 하나의 base64 문자열로 보내야합니다.

Android 클라이언트에서 중요한 단계는 .getPublic(). getEncoded() 다음에 base64 인코딩이옵니다. (은 keyagreement 정도입니다.)

어떻게해야합니까? 코드 예제는 매우 훌륭합니다.

답변

1

DER 인코딩의 경우 i2d_DHParams가 목적을 해결할 수 있습니다.

그런 다음 당신은 DH 방법 here을 볼 수 있습니다

int len; 
    len = i2d_DHParams (dh, &buf); 
    //It should write encoded dh to buf and len should be number of bytes written. 

를 호출 할 수 있습니다, 당신은 DH의 DH 매개 변수가 있다고 가정하자.

+0

이미 시도했지만 결과가 너무 짧습니다. java 문서는이 메서드를 약간 설명합니다. [Here] (http://docs.oracle.com/javase/1.5.0/docs/api/java/security/Key.html) 하지만 잘 모르겠습니다. 내가 어떻게 할 수 있는지. – JulianM

+0

@Joulez : 출력이 Java 코드로 base64 인코딩 인 경우이를 Base64로 인코딩해야합니다. – doptimusprime

+0

그래, 그래. 그러나 getEncoded() 메소드는 java에서 바이트 배열을 반환하고 별도의 단계에서 base64 인코딩을 얻습니다. – JulianM

관련 문제