我得到了一些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库(但了解一点密码学(的情况下,public_decrypt
函数似乎只是OpenSSL的RSA_public_decrypt
函数的包装器,这是一个低级RSA操作。
这本身很少有用,但它在内部用于签名验证操作。
由于解密密钥是公开的,因此无法使用它进行保密,并且要用它制作一个真正的签名方案(用于真正的短消息(,还需要一些好的填充方案。对于较长的消息,您需要将其与哈希函数相结合。
我不建议使用它(以及相应的RSA_private_encrypt
函数(,我认为M2Crypto库没有理由公开它。