2017-04-17 6 views
0
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); 

위의 코드는 XML에서로드 된 PrivateKey가있는 문자열에 서명합니다..NET에서 RSA.SignData에 해당하는 python

파이썬으로 다시 쓸 수 있도록 도와 주시겠습니까?

나는이 코드를 직접 작성했지만 다른 서명을 생성합니다!

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))) 
+0

SignData (byte [], object)가 무엇을하는지에 대한 적절한 문서를 찾지 못했으며 .Net의 참조 소스를 조사해 보지 않았습니다. 나는 그것이 단순한 교과서 RSA 호출이라고 생각하지만 확실하지 않다. 또한 PKCS # 1 v1.5 패딩 또는 PSS 패딩을 사용하는 RSA 서명이 될 수도 있습니다. –

+1

RSACryptoServiceProvider에서 RSASignaturePadding을 사용하지 않는 SignData 메서드는 PKCS # 1 v1.5 서명 패딩을 수행합니다. 여기 파이썬에서 샘플은 PKCS # 1 v1.5 암호화 패딩 (다른 짐승) 또는 원시 (다른 짐승 짐승)를 사용 중일 수 있습니다 암호화하는 것으로 나타납니다; 서명은 개인 키 조작 인 반면 공개 키 조작을 사용합니다. – bartonjs

+0

@bartonjs 대단히 감사합니다. 그런 유용한 주석이 있습니다. 그래서 암호화가 서명과 다르다는 것을 알았고 일부 Google이 개인 키를 사용하여 서명 할 것을 배웠습니다. 하지만 여전히 나는 사랑스런 결과물을 얻을 수 없으므로 서명 패딩에 대해 더 자세히 설명하고 pycrypto를 이러한 방식으로 강제 할 수 있습니까? –

답변

0

내가 알고 있지만, signing을 지원 this one (just named rsa)를 살펴 것을, 파이썬에는 내장 RSA 라이브러리가 없습니다.

# 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 
+1

도움을 주셔서 감사합니다. _ ** PyCryto ** _ –

+1

과 같은 외부 라이브러리는 링크 전용 답변이 아니지만 더 많은 정보를 제공 할 수 있습니다. 링크가 죽어 버리면 사용자가 설명을 사용하여 Google에 라이브러리의 새 위치를 찾을 수 있도록 라이브러리에 대해 설명하십시오. –

+0

그 라이브러리에 대해 더 자세히 알려주는 것이 좋습니다. 링크를 끼우는 것만으로는 충분하지 않습니다! 또한 op는 생성하기 위해 몇 가지 연산을 수행하는 것과 같은 Python으로 코드를 다시 작성하는 방법에 대해 질문했습니다. 어쨌든 당신이 언급 한 도서관은별로 효과가 없습니다! –