python的等效代码是什么RSA.SignData文件在.NET中?

2024-10-04 07:35:16 发布

您现在位置:Python中文网/ 问答频道 /正文

在一份文件中,我看到了以下代码:

RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
rsa.FromXmlString(“<RSAKeyValue><Modulus>oQRshGhLf2Fh...”);

byte[] signMain = rsa.SignData(Encoding.UTF8.GetBytes(data), new
                     SHA1CryptoServiceProvider());
sign = Convert.ToBase64String(signMain);

似乎它首先用RSASHA1对数据进行签名,然后对其进行base64编码。它从XML中读取RSA密钥。你知道吗

我用python对数据进行签名的代码如下:

key = open('priv_key.pem', "r").read()
rsakey = RSA.importKey(key)
signer = PKCS1_v1_5.new(rsakey)
digest = SHA256.new()
digest.update(data)
sign = signer.sign(digest)

首先,我将XML转换为PEM,然后使用上面的代码对数据进行签名。你知道吗

问题是.NET转换的输出与Python中的on不同。它没有按我想要的方式工作。如何在python中准确地转换.NET代码?我做错了什么。你知道吗


Tags: 文件数据key代码newdatanetxml
1条回答
网友
1楼 · 发布于 2024-10-04 07:35:16

Python说您使用了SHA-2-256(SHA256.new()),而在.NET中使用了SHA-1(-160)(new SHA1CryptoServiceProvider())。有人假设,如果你在两边都使用相同的算法,它是等价的。你知道吗

相关问题 更多 >