Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.NET中RSA.SignData的python等价物_Python_Rsa_Digital Signature_Pycrypto - Fatal编程技术网

.NET中RSA.SignData的python等价物

.NET中RSA.SignData的python等价物,python,rsa,digital-signature,pycrypto,Python,Rsa,Digital Signature,Pycrypto,上面的代码使用从xml加载的PrivateKey对字符串进行签名 你能帮我用python重写它吗 我自己写了这段代码,但它产生了一个不同的签名 RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(); rsa.FromXmlString(PrivateKey); string data = "SAMPLE TEXT."; byte[] signedData = rsa.SignData(Encoding.UTF8.GetBy

上面的代码使用从xml加载的PrivateKey对字符串进行签名

你能帮我用python重写它吗

我自己写了这段代码,但它产生了一个不同的签名

RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
rsa.FromXmlString(PrivateKey);

string data = "SAMPLE TEXT.";

byte[] signedData = rsa.SignData(Encoding.UTF8.GetBytes(data), new
SHA1CryptoServiceProvider());
string signedString = Convert.ToBase64String(signedData);

据我所知,Python中没有内置的RSA库,但请看看哪些支持RSA库


谢谢你的帮助,我可以使用像PyCrytoNot这样的外部库,这只是一个链接的答案,但你可以提供更多的信息。考虑一下这个库,如果链接死了,用户可以使用你的描述来找到谷歌,找到图书馆的新位置。你最好告诉我们更多关于那个图书馆的事。放链接是不够的!op还询问了用python重写代码的问题,比如做一些数学运算来生成!不管怎样,你提到的图书馆做的不多!我还没有找到
SignData(byte[],object)
功能的适当文档,查看.Net的参考源没有回答这个问题。我怀疑这是一个简单的教科书式RSA调用,但我不确定。它也可以是带有PKCS#1 v1.5填充或PSS填充的RSA签名。RSACryptoServiceProvider上不接受RsaSignatureAdding的SignData方法执行PKCS#1 v1.5签名填充。python中的示例似乎是加密的,可能使用PKCS#1 v1.5加密填充(不同的beast)或原始(不同的beast);它使用的是公钥操作,而签名是私钥操作。@bartonjs非常感谢,这是一条非常有用的评论,因此我了解到加密不同于签名,一些google教我签名将使用私钥完成。但是我仍然没有得到我可爱的输出,所以你能解释更多关于签名填充的内容,以及我如何强制pycrypto以这种方式工作吗?我写了一个新的代码片段,你可以在这里看到,但它还不能很好地工作(输出与C#.NET给我的不同)
from Crypto.PublicKey import RSA
from Crypto.Util.number import bytes_to_long, long_to_bytes
from hashlib import sha1
import base64

msg = "SAMPLE TEXT."
hashed = sha1(msg.encode('utf-8')).digest()
pubkey = RSA.construct((m,e))
encrypted = pubkey.encrypt(hashed, b'X')[0]
print("Signature: {0}".format(base64.b64encode(encrypted)))
# importing rsa
import rsa

# generating a key
(pubkey, privkey) = rsa.newkeys(512)

# message
message = 'Go left at the blue tree'

# signing
signature = rsa.sign(message, privkey, 'SHA-1')

# verifying
rsa.verify(message, signature, pubkey) # True