Announcement

Collapse
No announcement yet.

Signieren mit SHA256

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Signieren mit SHA256

    Hallo zusammen,

    ich habe den Hash einer Datei und möchte diesen mit einem Zertifikat aus dem Zertifikatsspeicher signieren.

    Den Hash (Byte Array) und das Zertifikat (X509Certificate2) bekomme ich übergeben.

    Versucht habe ich es mit folgendem Code:
    Code:
      // http://blogs.msdn.com/b/shawnfa/archive/2008/08/25/using-rsacryptoserviceprovider-for-rsa-sha256-signatures.aspx
      RSACryptoServiceProvider rsa_msdn = (RSACryptoServiceProvider)cert.PrivateKey;
      byte[] signature_msdn = rsa_msdn.SignData(data, "SHA256");
      if (rsa_msdn.VerifyData(data, "SHA256", signature_msdn))
      {
        Console.WriteLine("RSA-SHA256 signature verified");
        Console.WriteLine(ConvertHexToString(signature_msdn));
      }
      else
      {
        Console.WriteLine("RSA-SHA256 signature failed to verify");
        Console.WriteLine(ConvertHexToString(signature_msdn));
      }
    
      RSACryptoServiceProvider rsa_msdn2 = (RSACryptoServiceProvider)cert.PrivateKey;
      byte[] signature_msdn2 = rsa_msdn2.SignData(data, "SHA256");
      if (rsa_msdn2.VerifyData(data, "SHA256", signature_msdn2))
      {
        Console.WriteLine("RSA-SHA256 signature verified");
        Console.WriteLine(ConvertHexToString(signature_msdn2));
      }
      else
      {
        Console.WriteLine("RSA-SHA256 signature failed to verify");
        Console.WriteLine(ConvertHexToString(signature_msdn2));
      }
    Hier bekomme ich allerdings den Fehler 'Ungültiger Algorithmus angegeben'.

    Wenn ich den Key aus dem Store nicht verwende scheint es zu funktionieren:
    Code:
      RSACryptoServiceProvider rsa_msdn = new RSACryptoServiceProvider();
      byte[] signature_msdn = rsa_msdn.SignData(data, "SHA256");
      if (rsa_msdn.VerifyData(data, "SHA256", signature_msdn))
      {
        Console.WriteLine("RSA-SHA256 signature verified");
        Console.WriteLine(ConvertHexToString(signature_msdn));
      }
      else
      {
        Console.WriteLine("RSA-SHA256 signature failed to verify");
        Console.WriteLine(ConvertHexToString(signature_msdn));
      }

    Hat jemand von euch eine Idee wie ich das Zertifikat für die Signatur verwenden kann?

    Danke für eure Ideen.

    Aendrew
Working...
X