2016-01-04 24 views
6

Sertifikanın SHA256 parmak izi nasıl alınır? SHA 256 sertifikalarının iki parmak izi var, birincil parmak izini alabiliyorum ancak SHA256'yı alamıyorum.SHA256 sertifika parmak izi nasıl edinilir?

+0

Windows'da, signtool programı, bir kimlik doğrulaması karması için bir dosyaya 2 x509 sertifika eklenmesini sağlar. İlk sertifika, geriye dönük uyumluluk için SHA1 sertifikasıdır. Daha sonra, ikinci SHA 256 sertifikasına sahip olan kimliği doğrulanmamış bir öznitelik var. Bu yüzden 2 parmak izi – mksteve

+0

Bu SHA 256 parmak izine erişmek/okumak istiyorum? Sınıf veya Mülkiyet (C#) ile bana yardımcı olabilir misiniz? Cevabınız için teşekkür ederiz. – Mahadev

+0

Görevinizi açıklayabilir misiniz? SHA256 parmak izini almak istediğiniz yer belli değil mi? Sertifikanın kendisi mi? İmzalı içerik? Başka??? – Crypt32

cevap

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. 

Bu mesaj bana yardımcı oldu. Hashing text with SHA-256 at Windows Forms

1

Sertifikanın SHA256 parmak izini almak istiyorsanız, el ile çalışma yapmanız gerekir. Yerleşik Thumbprint özelliği yalnızca SHA1'dir.

Yo bir SHA256 class kullanabilir ve sertifikanın içeriği üzerinde karma hesaplamak için vardır:

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

ve gerekirse bir uzantısı yöntemine bu kodu dönüştürmek.

+0

Cevabınız için teşekkür ederiz, ancak bu kod doğru olmayan SHA-256 parmak izi sertifikası vermiyor – Mahadev

+0

İfadenizi yorumlayabilir misiniz? – Crypt32

+0

Herhangi bir web sitesine gidin (https: \\ olan), siteyi firefox'ta açın, SHA 256 thumbprint ve SHA 1 parmak izini gösteren web sitesinin sertifikasını görün. Yukarıdaki kodu kullanarak tarayıcıda gösterilen dönüş dizesini ve SHA 256 parmak izini karşılaştırın. Bu, farklı bir veri gösteriyor – Mahadev

İlgili konular