2010-01-20 48 views
6

Erlang có chức năng mã hóa tạo khóa riêng tư (tài liệu được sao chép bên dưới). Tuy nhiên tài liệu có vẻ mơ hồ và tôi không thể tìm thấy bất kỳ mã ví dụ nào mô tả cách tạo số nguyên tố chung hoặc trình tạo. Ai đó có thể đăng một ví dụ tạo cặp khóa công khai/riêng tư không? Cảm ơn trước sự giúp đỡ nào!Tạo cặp khóa RSA bằng Erlang?

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

loại: DHParameters = [P, G] P, G = Mpint đâu P là số nguyên tố chung và G là các máy phát điện chia sẻ. PublicKey, PrivateKey = Mpint() Tạo khoá công khai Diffie-Hellman và PrivateKey (nếu không được đưa ra).

+1

Bạn có biết sự khác biệt giữa RSA và Diffie-Hellman không? –

+1

Nó có thể giúp nếu bạn giải thích lý do tại sao bạn cần một cặp khóa RSA. Không có hành vi phạm tội, nhưng nếu bạn đang nhầm lẫn giữa RSA và DH, bạn có thể vô tình cố sử dụng thuật toán mã hóa không phù hợp với ứng dụng của mình. Có lẽ chúng ta có thể gợi ý một cái phù hợp hơn. – Tadmas

+0

Nếu bạn chỉ muốn nhận một cặp khóa công khai và khóa riêng cho RSA, hãy thử: 'crypto: generate_key (rsa, {1024, 3})' – beenotung

Trả lời

7

Bạn không tạo số nguyên tố chung hoặc trình tạo cho Diffie-Hellman. Xem:

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

Các thông số P và G được đồng ý trước thời hạn của cả hai bên. Sử dụng các ký hiệu của các bài viết Wikipedia, crypto:dh_generate_key được sử dụng cho bước 2 & 3 để tạo a/A & b/B, và sau đó crypto:dh_compute_key được sử dụng cho bước 4 & 5 để tính chia sẻ bí mật s.

Đối với RSA, tôi không biết chức năng thư viện chuẩn nào tạo cặp khóa công khai/riêng tư. Tạo số nguyên tố là một thuật toán khá liên quan từ những gì tôi nhớ; Tôi thực sự khuyên bạn không nên tự mình viết mã. Cặp khóa Diffie-Hellman không phù hợp để sử dụng với RSA; chúng là các thuật toán khác nhau dành cho các mục đích khác nhau.

Thông thường, bạn không cần phải tạo chúng trong thời gian chạy vì bạn có thể sử dụng lại cặp khóa. Bạn có thể sử dụng bất kỳ số lượng các nguồn khác để thực sự tạo ra nó. (Có lẽ ssh-keygen sẽ hoạt động? Và luôn có OpenSSL.) Để sử dụng cặp khóa bạn đã tạo, bạn sẽ sử dụng các hàm crypto:rsa_ public/private _ encrypt/decrypt.

2

Xem cutkey (https://github.com/yrashk/cutkey)

"cutkey là một ứng dụng Erlang để tạo ra các phím RSA. Nó được thực hiện như một trình điều khiển cổng mà các cuộc gọi RSA_generate_key OpenSSL của trên một sợi từ hồ async."

0

os: lệnh ("openssl genpkey -algorithm RSA -out private_key.pem -pkeyopt rsa_keygen_bits: 2048").

Các vấn đề liên quan