9

Erlang には、公開秘密鍵を生成する crypto 関数があります (ドキュメントは以下にコピーされています)。ただし、ドキュメントがあいまいで、共有素数またはジェネレーターを生成する方法を説明するサンプル コードが見つかりません。誰かが公開鍵と秘密鍵のペアを生成する例を投稿できますか? 助けてくれてありがとう!

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

型: DHParameters = [P, G] P, G = Mpint ここで、P は共有素数、G は共有ジェネレータです。PublicKey, PrivateKey = Mpint() Diffie-Hellman PublicKey と PrivateKey を生成します (指定されていない場合)。

4

4 に答える 4

9

共有素数または Diffie-Hellman のジェネレーターを生成しません。見る:

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

パラメータ P と G は、双方によって事前に合意されています。ウィキペディアの記事の表記法を使用してcrypto:dh_generate_key、ステップ 2 と 3 でa/ A& b/Bを生成するcrypto:dh_compute_keyために使用され、ステップ 4 と 5 で共有シークレットを計算するために使用されますs

RSAについては、公開鍵と秘密鍵のペアを生成する標準ライブラリ関数を知りません。私が覚えている限り、素数の生成はかなり複雑なアルゴリズムです。自分でコーディングしようとしないことを強くお勧めします。Diffie-Hellman キー ペアは、RSA での使用には適していません。これらは、異なる目的を意図した異なるアルゴリズムです。

通常、キー ペアは再利用できるため、実行時にこれらを生成する必要はありません。他のソースをいくつでも使用して、実際に生成できます。(たぶん ssh-keygen が機能するでしょうか? OpenSSLは常にあります。) 作成したキー ペアを使用するには、crypto:rsa_ public/private _ encrypt/decrypt関数を使用します。

于 2010-01-21T02:04:15.623 に答える
2

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

"cutkey is an Erlang app for generating RSA keys. It is implemented as a port driver that calls OpenSSL's RSA_generate_key on a thread from the async pool."

于 2014-05-26T21:14:27.650 に答える
2

crypto:generate_key/2 関数を使用して、RSA 公開鍵と秘密鍵を作成できます。

2048 の長さの場合

{Pub, Priv} = crypto:generate_key(rsa, {2048,65537}).

または 1024 の長さの場合

{Pub, Priv} = crypto:generate_key(rsa, {1024,65537}).

参照: https://erlang.org/doc/apps/crypto/crypto.pdf (37 ページ)

generate_key(Type, Params) -> {PublicKey, PrivKeyOut}

どこ

Type = rsa


Params = rsa_params() =
    {ModulusSizeInBits :: integer(),
     PublicExponent :: key_integer()} 
于 2020-09-03T15:23:05.433 に答える