M2Crypto';s public_decrypt(块,padarg)执行解密或验证

本文关键字:padarg 执行 解密 验证 public decrypt M2Crypto | 更新日期: 2023-09-27 18:15:57

我得到了一些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#中的替代项是什么?

M2Crypto';s public_decrypt(块,padarg)执行解密或验证

在不了解M2Crypto库(但了解一点密码学(的情况下,public_decrypt函数似乎只是OpenSSL的RSA_public_decrypt函数的包装器,这是一个低级RSA操作

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

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

我不建议使用它(以及相应的RSA_private_encrypt函数(,我认为M2Crypto库没有理由公开它。