在C#

时间:2016-04-20 22:13:18

标签: c# hash openssl

我们正试图让主题名哈希算法在C#中运行。您可以使用以下代码从openssl命令行运行它。

openssl x509 -inform PEM -hash -noout -in google.pem

这将返回一个8字符代码,该代码是证书主题的截断哈希值。但是,我们的代码不会返回相同的代码。

public static String GenerateX509SubjectNameHash(X509Certificate xCert)
{
    byte[] bytes = Encoding.ASCII.GetBytes(xCert.SubjectName.Name);
    HashAlgorithm hash = new SHA1Managed();
    var hashBytes = hash.ComputeHash(bytes);
    ulong hashVal = (((ulong)hashBytes[0]) | ((ulong)hashBytes[1] << 8) | ((ulong)hashBytes[2] << 16) | ((ulong)hashBytes[3] << 24) & 0xffffffff);

    return hashVal.ToString("X");
}

在openssl中执行此操作的原始代码可在此处引用:https://github.com/openssl/openssl/blob/master/crypto/x509/x509_cmp.c#L226

我们做错了什么? --Thanks,

0 个答案:

没有答案