我希望能够生成并再生相同的 RSA 密钥password(和盐)单独在python.
目前我正在使用 pycrypto 进行此操作,但是,它似乎并不能单独从密码生成相同的密钥。原因似乎是当 pycrypto 生成 RSA 密钥时,它在内部使用某种随机数。
目前我的代码如下所示:
import DarkCloudCryptoLib as dcCryptoLib #some costume library for crypto
from Crypto.PublicKey import RSA
password = "password"
new_key1 = RSA.generate(1024) #rsaObj
exportedKey1 = new_key1.exportKey('DER', password, pkcs=1)
key1 = RSA.importKey(exportedKey1)
new_key2 = RSA.generate(1024) #rsaObj
exportedKey2 = new_key2.exportKey('DER', password, pkcs=1)
key2 = RSA.importKey(exportedKey2)
print dcCryptoLib.equalRSAKeys(key1, key2) #wish to return True but it doesn't
我真的不在乎是否必须不使用 pycrypto,只要我可以仅从密码和盐生成这些 RSA 密钥即可。
我在这里先向您的帮助表示感谢。
仅供参考,dcCryptoLib.equalRSAKeys(key1, key2) 函数如下所示:
def equalRSAKeys(rsaKey1, rsaKey2):
public_key = rsaKey1.publickey().exportKey("DER")
private_key = rsaKey1.exportKey("DER")
pub_new_key = rsaKey2.publickey().exportKey("DER")
pri_new_key = rsaKey2.exportKey("DER")
boolprivate = (private_key == pri_new_key)
boolpublic = (public_key == pub_new_key)
return (boolprivate and boolpublic)
注意:此外,我仅使用 RSA 进行身份验证。因此,任何提供安全生成方式的解决方案不对称的从密码生成的签名/验证对于我的应用程序来说是可接受的解决方案。不过,我认为从密码生成 RSA 密钥也是一个应该回答的问题,因为如果使用正确,它似乎很有用。