2016-01-04 2 views
6

Как получить отпечаток SHA256 сертификата?. У сертификатов SHA 256 есть два отпечатка пальца, я могу получить основной отпечаток пальца, но не SHA256.Как получить отпечаток сертификата SHA256?

+0

В Windows программа signtool позволяет добавить два x509 сертификата в файл для хэша аутентификации. Первым сертификатом является сертификат SHA1 - для обратной совместимости. Тогда есть не аутентифицированный атрибут, который имеет второй сертификат SHA 256. Следовательно, 2 отпечатка – mksteve

+0

Я хочу получить/прочитать, что SHA 256 отпечаток?. Не могли бы вы помочь мне с классом или свойством (в C#)?. Благодарим вас за ответ – Mahadev

+0

Вы можете объяснить свою задачу? Непонятно, где вы хотите получить отпечаток SHA256? Из самого сертификата? Подписанный контент? Else ??? – Crypt32

ответ

0
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 haracters 
      .Replace("-", string.Empty).ToLower();   
      return result; 
     } 
After getting the Hashbytes , you have to do the bit convertion. 

Эти должности также помогли мне. Hashing text with SHA-256 at Windows Forms

1

Если вы хотите получить отпечаток SHA256 сертификата, вам необходимо выполнить ручную работу. Встроенное свойство Thumbprint - только SHA1.

Yo должны использовать SHA256 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")); 
     } 
    } 
} 

и конвертировать этот код в метод расширения, если это необходимо.

+0

Спасибо за ваш ответ, но этот код не дает правильного отпечатка SHA-256 сертификата – Mahadev

+0

, можете ли вы аргументировать ваше заявление? – Crypt32

+0

Перейти на любой сайт (https: \\), Открыть сайт в firefox, см. Сертификат, который на веб-сайте, который показывает отпечаток SHA 256 и отпечаток SHA 1. Используя вышеприведенный код, сравните строку возврата и отпечаток SHA 256, который отображается в браузере. Это показывает разные данные. – Mahadev

Смежные вопросы