1

我得到了一些似乎使用公钥来解密数据的 Python 代码。数据可能使用相应的私钥加密。(我不确定,因为使用私钥加密通常称为签名)。

如果我们有适当的公钥文件,下面给出的 Python 代码可以正常工作:

def decryptUsingPubKey(b64encData):

    dcdData = base64.b64decode(b64encData)
    block = dcdData[0:512]
    rsaObj = M2Crypto.RSA.load_pub_key(keyFile)
    padarg = M2Crypto.RSA.pkcs1_padding
    decData = rsaObj.public_decrypt(block, padarg)

该方法public_decrypt(block, padarg)实际上做了什么?它是解密一些加密数据,还是只是验证它?

它在 C# 中的替代品是什么?

4

1 回答 1

0

在不了解 M2Crypto 库(但了解一点密码学)的情况下,该函数看起来public_decrypt只是OpenSSLRSA_public_decrypt函数的包装器,即低级 RSA 操作

这本身很少有用,但它在内部用于签名验证操作。

由于解密密钥是公开的,因此无法将其用于机密性,并且要从中制作真正的签名方案(对于真正的短消息),您还需要一些好的填充方案。对于较长的消息,您需要将其与哈希函数结合使用。

我不建议使用它(以及相应的RSA_private_encrypt函数),而且我看不出 M2Crypto 库公开它的理由。

于 2011-11-29T21:34:53.800 回答