Привет всем,
Я пытаюсь подписать одно сообщение с помощью алгоритма RSA, я работаю над сжатием Framwork, это мой код:
private void Signer_Click(object sender, EventArgs e)
{
///cle de string ver byte[]
string clePriveeFile = @"\Program Files\PrivateKey.pem";
StreamReader reader = new StreamReader(clePriveeFile);
string contenuKeyPrivate = reader.ReadToEnd();
byte[] keyByte = Certification.DecodeOpenSSLPrivateKey(contenuKeyPrivate);
string Data = "Salut tout le monde";
byte[] DataBytes = System.Text.Encoding.UTF8.GetBytes(Data);//.UTF7.GetBytes(Data);
//Hasher le message
SHA1Managed sha1 = new SHA1Managed();
byte[] hash = sha1.ComputeHash(DataBytes);
string hach = Convert.ToBase64String(hash);
RSACryptoServiceProvider Rsa = Certification.DecodeRSAPrivateKey(keyByte);
byte[] sign = Rsa.SignHash(hash, CryptoConfig.MapNameToOID("SHA1"));
string resultat = Convert.ToBase64String(sign);
this.label1.Text = this.resultat;
}
с 'DecodeOpenSSLPrivateKey' и 'DecodeRSAPrivateKey', здесь используются те же функции: http://www.jensign.com/opensslkey/index.html
для результата моего хэша я получаю: hash = "I4t474liO6H + p8SeDsoIkxmi8b0 ="
если я делаю то же самое с командой openSSL: $ echo "Salut tout le monde" | openssl dgst -sha1 | openssl enc -base64
Я получаю это: "NjFlOWI4Y2NjN2U2MzFkNTQwNTRmZjE1ZGUyYzk2MDczYTM2ZjRjZAo ="
то же самое с моим результатом знака, с этой командой:
$ echo "Salut tout le monde" | openssl dgst -sha1 -sign PrivateKey.pem | openssl enc -base64
У меня есть подпись, как это: "V6c6XNK7O8 + IKKuGTGENdZwoWxhQLIEFHW7XSdoXzMAp1gLu8B5UxXi0lr6JhVDW6SI8p8PtlT + fxEoafY + ZCigIq4xW6e32f6hxYWeYi7silh44I1m7LF7JYR1lfcegnO0Cw + YPqLPRrZUbdcrvMo1ijUGH3SuK + iot2lait9s ="
с помощью моего кода я получаю это:
* * 1 022 результат = "YlbnppFDP5ejdYOPoUI / 1W6i + ClrKrxbIdA24IqllGDRWGBrWLtGwlfNkh4 + В + gzcrX8HI7PkNP1Pq2ud1jE4EhfUVjBkZJwXj / ZYI3fPF41oiIMdF63lZiR / SEHQ5rMTbdsfQtkkBmFTr8udCJNnmnSimRQ458nZvIsYOUW6j4 ="
Я не могу найти свою ошибку :( Кто-то может мне помочь?