2010-01-20 127 views
6

Erlang有一个生成公钥的加密函数(文档复制如下)。然而,文档看起来很模糊,我找不到任何示例代码来描述如何生成共享素数或生成器。有人可以发布一个生成公钥/私钥对的例子吗?预先感谢任何帮助!用Erlang生成一个RSA密钥对?

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公钥和PrivateKey(如果未给定)。

+1

你知道RSA和Diffie-Hellman的区别吗? – 2010-01-21 01:19:23

+1

如果你解释了为什么你需要一个RSA密钥对,它可能会有所帮助。没有冒犯性,但是如果你对RSA和DH感到困惑,你可能会在不知不觉中尝试使用不适合你的应用程序的加密算法。也许我们可以提出一个更好的建议。 – Tadmas 2010-01-21 02:15:36

+0

如果你只是想得到一对RSA的公钥和私钥,试试这个:'crypto:generate_key(rsa,{1024,3})' – beenotung 2017-11-04 06:23:39

回答

7

您不会为Diffie-Hellman生成共享素数或生成器。请参阅:

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

参数P和G同意双方提前时间。使用维基百科文章的符号,crypto:dh_generate_key用于步骤2 & 3生成a/Ab &/B,然后crypto:dh_compute_key用于步骤4 & 5来计算共享秘密s

对于RSA,我不知道生成公钥/私钥对的标准库函数。从我记忆中产生素数是一个相当复杂的算法;我强烈建议你不要自己编写代码。用于RSA的Diffie-Hellman密钥对不适合;它们是用于不同目的的不同算法。

通常,您不需要在运行时生成这些密钥对,因为您可以重复使用该密钥对。您可以使用任何数量的其他来源实际生成它。 (也许ssh-keygen会工作吗?总是有OpenSSL。)要使用你创建的密钥对,你需要使用crypto:rsa_ public/private _ encrypt/decrypt函数。

0

os:command(“openssl genpkey -algorithm RSA -out private_key.pem -pkeyopt rsa_keygen_bits:2048”)。