【发布时间】:2011-01-24 02:12:59
【问题描述】:
对于 OpenID 智能模式,规范使用 Diffie-Hellman 密钥交换。我想知道是否可以重用公钥和私钥(假设它们没有被泄露),或者是否应该为每个请求生成它们。我正在使用 PHP 的 OpenSSL 库(我的代码:$key = openssl_pkey_new(array('private_key_type' => OPENSSL_KEYTYPE_DH));)来生成密钥,而且速度非常慢(生成密钥平均需要 22 秒——对于网站来说这是非常不可接受的)。如果无法重用密钥,有没有更快的方法可以使用 OpenSSL 生成密钥?由于对数学库等的依赖,我宁愿不手动完成。
编辑:明确地说,我正在寻找两个答案:我可以在 OpenID 关联模式下重用 Diffie-Hellman 密钥吗?如果没有,是否有比openssl_pkey_new() 更快的方式使用 OpenSSL 生成密钥,因为这需要非常长的时间。
【问题讨论】:
-
哇,你为什么不使用 OpenID 库,而不是自己做 OpenID 事务?
-
因为 a) 没有一个能满足我的需要,b) 我不喜欢使用我不懂的东西。 JanRain 库的设计非常糟糕,在我的设置中加载缓慢——更不用说它不支持 PHP 5.3.5(我不会妥协)。 LightOpenID 到处使用 preg 而不是正确的 XML DOM 方法,这让我很恼火(更不用说它仍然不支持智能模式身份验证的事实)。没有同时支持 PHP 5.3.5 和智能模式身份验证的库。
-
Zend 框架 OpenID 怎么样? framework.zend.com/manual/en/zend.openid.consumer.html
-
我想到了这一点,这就是我使用 OpenSSL 的想法,但它过于彻底地嵌入到 Zend 框架中。