【问题标题】:What is the equivalent python code for RSA.SignData in .NET?.NET 中 RSA.SignData 的等效 python 代码是什么?
【发布时间】: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);

似乎它首先使用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 代码?我在这里做错了什么。

【问题讨论】:

    标签: python .net rsa sha1


    【解决方案1】:

    你的 Python 说你使用了 SHA-2-256 (SHA256.new()),而在 .NET 中你使用了 SHA-1(-160) (new SHA1CryptoServiceProvider())。如果你在两边都使用相同的算法,有人认为它是等效的。

    【讨论】:

    • 我使用了 SHA1,但输出不同。
    猜你喜欢
    • 2017-09-13
    • 2014-08-31
    • 1970-01-01
    • 1970-01-01
    • 2019-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多