代码之家  ›  专栏  ›  技术社区  ›  Mahadev

如何获取SHA-256证书指纹?

  •  9
  • Mahadev  · 技术社区  · 9 年前

    如何获取证书的SHA-256指纹?

    SHA-256证书有两个指纹,我可以检索主指纹,但不能检索SHA-256。

    2 回复  |  直到 2 年前
        1
  •  3
  •   Peter Mortensen Sumit Kumar    2 年前

    如果你想获得证书的SHA-256指纹,你必须做一些手工工作。内置的 Thumbprint 属性是 SHA-1 只有

    你必须使用 SHA-256 class 并计算证书内容的哈希:

    using System;
    using System.Linq;
    using System.Security.Cryptography;
    using System.Security.Cryptography.X509Certificates;
    
    namespace MyNamespace {
        class MyClass {
            public static String GetSha2Thumbprint(X509Certificate2 cert) {
                Byte[] hashBytes;
                using (var hasher = new SHA256Managed()) {
                    hashBytes = hasher.ComputeHash(cert.RawData);
                }
                return hashBytes.Aggregate(String.Empty, (str, hashByte) => str + hashByte.ToString("x2"));
            }
        }
    }
    

    如果需要,可以将此代码转换为扩展方法。

        2
  •  0
  •   Peter Mortensen Sumit Kumar    2 年前

    使用:

    public static String GetSha2Thumbprint(X509Certificate2 cert)
    {
        Byte[] hashBytes;
        using (var hasher = new SHA256Managed())
        {
            hashBytes = hasher.ComputeHash(cert.RawData);
        }
        string result = BitConverter.ToString(hashBytes)
            // This will remove all the dashes in between each two characters
        .Replace("-", string.Empty).ToLower();
        return result;
    }
    

    得到哈希字节后,必须进行比特转换。

    这篇帖子也帮助了我: Hashing text with SHA-256 in Windows Forms