2016-01-04 36 views
6

Come ottenere l'identificazione personale del certificato SHA256 ?. I certificati SHA 256 hanno due impronte digitali, sono in grado di recuperare l'identificazione personale primaria ma non SHA256.Come ottenere l'identificazione personale del certificato SHA256?

+0

Su Windows, il programma signtool consente di aggiungere 2 certificati x 509 a un file per un hash di autenticazione. Il primo certificato è il certificato SHA1 - per compatibilità con le versioni precedenti. Poi c'è un attributo non autenticato che ha il secondo certificato SHA 256. Quindi le 2 impronte digitali – mksteve

+0

Voglio accedere/leggere l'identificazione personale SHA 256 ?. Potresti per favore aiutarmi con la classe o la proprietà (in C#)? Grazie per la tua risposta – Mahadev

+0

puoi spiegare il tuo compito? Non è chiaro dove si desidera ottenere l'identificazione personale SHA256? Dal certificato stesso? Contenuto firmato? Altro??? – Crypt32

risposta

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. 

Anche questi post mi hanno aiutato. Hashing text with SHA-256 at Windows Forms

1

Se si desidera ottenere l'identificazione personale SHA256 del certificato, è necessario eseguire alcune operazioni manuali. La proprietà incorporata Thumbprint è solo SHA1.

Yo necessario utilizzare un SHA256 class e calcolare hash sul contenuto del certificato:

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

e si converte il codice a un metodo di estensione, se necessario.

+0

Grazie per la risposta, ma questo codice non fornisce l'identificazione personale del certificato SHA-256 corretta. – Mahadev

+0

puoi argomentare la tua affermazione? – Crypt32

+0

Vai a qualsiasi sito web (che ha https: \\), apri il sito in firefox, vedi il certificato che del sito web, che mostra l'identificazione personale SHA 256 e l'identificazione personale SHA 1. Utilizzando il codice precedente confrontare la stringa di restituzione e l'identificazione personale SHA 256 che viene visualizzata nel browser. Questo sta mostrando dati diversi – Mahadev