使用RSA算法在c#中散列并签署一条消息,用于紧凑框架

时间:2010-12-02 11:34:28

标签: c# compact-framework

Hy大家,

我尝试使用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 =”

使用我的代码我得到了这个:

结果= “YlbnppFDP5ejdYOPoUI / 1W6i + ClrKrxbIdA24IqllGDRWGBrWLtGwlfNkh4 + B + gzcrX8HI7PkNP1Pq2ud1jE4EhfUVjBkZJwXj / ZYI3fPF41oiIMdF63lZiR / SEHQ5rMTbdsfQtkkBmFTr8udCJNnmnSimRQ458nZvIsYOUW6j4 =”

我无法找到我的错误:(有人能帮帮我吗?

2 个答案:

答案 0 :(得分:1)

一个问题是echo输出包含换行符后缀。尝试哈希“Salut tout le monde \ n”。 另一个是OpenSSL以十六进制编码格式输出SHA1摘要,因此在Base64中对结果进行编码是没有意义的。

答案 1 :(得分:0)

或在openssl命令行中,使用echo | set / p = Salut tout le monde | openssl

/ p将取消回车