【发布时间】:2017-06-17 21:00:46
【问题描述】:
在一个文档中我看到了下面的代码:
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
rsa.FromXmlString(“<RSAKeyValue><Modulus>oQRshGhLf2Fh...”);
byte[] signMain = rsa.SignData(Encoding.UTF8.GetBytes(data), new
SHA1CryptoServiceProvider());
sign = Convert.ToBase64String(signMain);
似乎它首先使用RSA 和SHA1 对数据进行签名,然后对其进行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 代码?我在这里做错了什么。
【问题讨论】: