2011-02-17 122 views
0

我想在perl中生成公钥和私钥对,有效(快),并且能够为我自己输入随机数据。 随着输入随机数据,当然我的意思是,该函数需要让X随机位生成一个Y位的公钥/私钥对,并且我应该能够将这些X位提供给该函数。在perl中用自定义PRNG生成RSA密钥对

所以idially,函数应该是这样的:

($private, $public) = genRSAkeypair($randomdata, 1024); 

和$私人然后包含:

----BEGIN RSA PRIVATE KEY----- 
.... 
----END .... 

和$公共包含

----BEGIN RSA PUBLIC and so on... 

$ randomdata是,不只是一个来自任何随机发生器的随机位串。如果$ randomdata在instance1和instance2之间一致,那么instance1和instance2应该返回相同的公钥和私钥。

如果你想知道这是什么的用处,我打算做一个基于密码的RSA密钥生成系统,而不需要在任何地方存储任何密钥。所以密钥是直接从密码生成的,通过使用以特定方式链接的SHA512来创建静态随机数据。

当然,每次在系统中输入相同的密码时,必须返回相同的公钥和私钥,否则系统将毫无用处。

任何想法?

+0

我怀疑这将是安全的。除非您使用_huge_密码(如一段文字),否则您将没有足够的熵来使用完整的密钥空间。我猜想,任何知道自己所做的事情的人都不会想要攻击你的密码系统,但是如果有人这样做,我敢打赌他们可以打破它。 – cjm 2011-02-17 21:41:12

+0

只要基于密码生成随机数据的CSPRNG具有蔓延效应,并且其密码强壮,则需要知道密码才能生成正确的公钥/私钥。如果密码足够好,唯一的选择是强制密码。在这种情况下,SHA512哈希链被用作随机数据,获得正确哈希的唯一方法是强制密码。 – 2011-02-17 21:54:43

回答

0

我会尝试地穴:: OpenSSL的:: RSA,似乎绑定 直接与libssl