2016-01-04 13 views
6

Wie bekomme ich den SHA256 - Fingerabdruck des Zertifikats? SHA 256-Zertifikate haben zwei Fingerabdrücke, ich kann den primären Fingerabdruck, aber nicht SHA256 abrufen.Wie bekomme ich den SHA256-Zertifikat-Fingerabdruck?

+0

Unter Windows ermöglicht das signtool-Programm das Hinzufügen von 2 x509-Zertifikaten zu einer Datei für einen Authenticode-Hash. Das erste Zertifikat ist das SHA1-Zertifikat - aus Gründen der Abwärtskompatibilität. Dann gibt es ein nicht authentifiziertes Attribut, das das zweite SHA 256-Zertifikat besitzt. Daher die 2 Fingerabdrücke – mksteve

+0

Ich möchte Zugriff/lesen, dass SHA 256 Daumenabdruck?. Könntest du mir bitte mit der Klasse oder dem Grundstück (in C#) helfen? Vielen Dank für Ihre Antwort – Mahadev

+0

Können Sie Ihre Aufgabe erklären? Wo ist der SHA256 Daumenabdruck? Aus dem Zertifikat selbst? Signierter Inhalt? Sonst??? – Crypt32

Antwort

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. 

Diese Beiträge haben mir auch geholfen. Hashing text with SHA-256 at Windows Forms

1

Wenn Sie den SHA256-Fingerabdruck des Zertifikats erhalten möchten, müssen Sie manuell arbeiten. Eingebaute Thumbprint Eigenschaft ist nur SHA1.

Yo haben eine SHA256 class zu verwenden und berechnen Hash über Zertifikat Inhalt:

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")); 
     } 
    } 
} 

und wandeln Sie diesen Code auf eine Erweiterungsmethode, falls erforderlich.

+0

Vielen Dank für Ihre Antwort, aber dieser Code gibt nicht den richtigen SHA-256 Fingerabdruck des Zertifikats – Mahadev

+0

Kannst du deine Aussage argumentieren? – Crypt32

+0

Gehen Sie zu einer Website (die https: \\ hat), öffnen Sie die Website in Firefox, sehen Sie das Zertifikat, die der Website, die SHA 256 Fingerabdruck und SHA 1 Daumenabdruck zeigt. Mit dem obigen Code vergleichen Sie die Rückgabezeichenfolge und den SHA 256-Fingerabdruck, der im Browser angezeigt wird. Dies zeigt verschiedene Daten – Mahadev