Реализовать данные подписи в django - PullRequest
0 голосов
/ 19 января 2020

У меня есть код в c#.

public string GetSign(string data)
{
var cs = new CspParameters { KeyContainerName = "PaymentTest" };
var rsa = new RSACryptoServiceProvider(cs) { PersistKeyInCsp = false };
rsa.Clear();
rsa = new RSACryptoServiceProvider();
rsa.FromXmlString("<RSAKeyValue><Modu-
lus>My RSA Private Key</RSAKeyValue>");
byte[] signMain = rsa.SignData(Encoding.UTF8.GetBytes(data), new
SHA1CryptoServiceProvider());
string sign = Convert.ToBase64String(signMain);
return sign;
}

Я хочу реализовать этот код в django. В этом коде используется SHA1. Я реализовал это в python с SHA256, но результат не тот же.

from Crypto.PublicKey import RSA
from Crypto.Cipher import PKCS1_v1_5 as Cipher_PKCS1_v1_5
from Crypto.Signature import PKCS1_v1_5
from base64 import b64decode, b64encode
def sign_data(data, private_key_path):
    from Crypto.Hash import SHA256

    message = b64encode(bytes(data, 'utf8'))
    digest = SHA256.new()
    digest.update(message)    

    private_key = False
    logger.info(private_key_path)

    with open(private_key_path, "r") as key_file:
        private_key = RSA.importKey(key_file.read())

    signer = PKCS1_v1_5.new(private_key)
    sig = signer.sign(digest)
    sig = b64encode(sig)
    return sig

Я изменил SHA256 на SHA1, но это дает мне ошибку:

File "/home/kamiar/.pyenv/versions/3.6.8/lib/python3.6/site-packages/Crypto/Util/asn1.py", line 211, in encode
    raise ValueError("Trying to DER encode an unknown object")

Я не знаю, в чем моя проблема. Кто-нибудь может мне помочь?

...