2010-01-20 5 views
6

Erlang은 공개 비공개 키 (아래에 복사 된 문서)를 생성하는 암호 기능을 가지고 있습니다. 그러나 설명서가 막연한 것처럼 보이고 공유 소수 또는 생성기를 생성하는 방법을 설명하는 예제 코드를 찾을 수 없습니다. 공개/개인 키 쌍을 생성하는 예제를 게시 할 수 있습니까? 어떤 도움을 주셔서 미리 감사드립니다!Erlang과 RSA 키 쌍 생성?

dh_generate_key(DHParams) -> {PublicKey,PrivateKey} 
dh_generate_key(PrivateKey, DHParams) -> {PublicKey,PrivateKey} 

유형 : DHParameters의 P = 공유 소수이고, G는 공유 발생기이다 P, G] P, G = Mpint . PublicKey, PrivateKey = Mpint() Diffie-Hellman PublicKey 및 PrivateKey를 생성합니다 (지정되지 않은 경우).

+1

RSA와 Diffie-Hellman의 차이점을 알고 있습니까? –

+1

왜 RSA 키 쌍이 필요한지 설명하면 도움이 될 것입니다. 공격은 아니지만 RSA와 DH를 혼동스럽게하는 경우 모르는 사이에 애플리케이션에 적합하지 않은 암호화 알고리즘을 사용하려고 할 수 있습니다. 어쩌면 우리는 더 잘 맞는 것을 제안 할 수 있습니다. – Tadmas

+0

RSA의 공개 키와 개인 키 쌍을 얻고 싶다면 다음을 시도하십시오 :'crypto : generate_key (rsa, {1024, 3})' – beenotung

답변

7

Diffie-Hellman의 공유 소수 또는 생성기를 생성하지 않습니다. 참조 :

http://en.wikipedia.org/wiki/Diffie-Hellman_key_exchange

매개 변수의 P와 G 양측에 의해 미리에 동의합니다. 위키 백과 문서의 표기법을 사용하여, crypto:dh_generate_keya/A & b/B를 생성하는 단계 2 & 3에 사용하고 crypto:dh_compute_key는 공유 비밀 s을 계산하는 단계 4 & 5에 사용됩니다.

RSA의 경우 공용/개인 키 쌍을 생성하는 표준 라이브러리 기능을 알지 못합니다. 소수 생성은 내가 기억하는 것으로부터 꽤 복잡한 알고리즘이다. 나는 당신이 직접 코딩하려고하지 말 것을 강력히 권한다. Diffie-Hellman 키 쌍 은 적합하지 않습니다. RSA와 함께 사용하려면; 그들은 서로 다른 목적으로 의도 된 다른 알고리즘입니다.

일반적으로 키 쌍을 다시 사용할 수 있기 때문에 런타임에 생성 할 필요가 없습니다. 원하는 수의 다른 소스를 실제로 생성 할 수 있습니다. (아마도 ssh-keygen이 작동할까요? 그리고 항상 OpenSSL이 있습니다.) 생성 한 키 쌍을 사용하려면 crypto:rsa_ public/private _ encrypt/decrypt 함수를 사용해야합니다.

2

참조 cutkey (https://github.com/yrashk/cutkey)

는 "cutkey는 RSA 키를 생성하는 얼랑 응용 프로그램입니다. 그것은 비동기 풀의 스레드에서 OpenSSL에의 RSA_generate_key를 호출하는 포트 드라이버로 구현됩니다."

0

OS : 명령 ("OpenSSL을 genpkey -algorithm RSA -out private_key.pem -pkeyopt rsa_keygen_bits : 2048").

관련 문제