Wie man den privaten Schlüssel aus der PKCS#12 (.p12) Datei mit C#

Im Versuch der Anmeldung einige Daten, die Verwendung von PKCS#12-Zertifikat ,aber ich habe ein problem mit der Beschaffung privaten Schlüssel von PKCS#12 (.p12-Datei).

    public byte[] sign(string text)
    {
        string password = "1111";
        X509Certificate2 cert = new X509Certificate2("c:\\certificate.p12",password);
        byte[] certData = cert.Export(X509ContentType.Pfx,password);

        X509Certificate2 newCert = new X509Certificate2(certData, password);
        RSACryptoServiceProvider crypt = (RSACryptoServiceProvider)newCert.PrivateKey;

        SHA1Managed sha1 = new SHA1Managed();
        UnicodeEncoding encoding = new UnicodeEncoding();
        byte[] data = encoding.GetBytes(text);
        byte[] hash = sha1.ComputeHash(data);
        return crypt.SignHash(hash, CryptoConfig.MapNameToOID("SHA1"));
    }

Das problem ist, dass newCert.PrivateKey ist null, aber wenn ich mich mit .pfx certicitae in ähnlicher Weise, wie es funktioniert.

    public byte[] sign(string text)
    {
        string password = "1234";
        X509Certificate2 cert = new X509Certificate2("c:\\certificate.pfx", password);
        RSACryptoServiceProvider crypt = (RSACryptoServiceProvider)cert.PrivateKey;
        SHA1Managed sha1 = new SHA1Managed();
        UnicodeEncoding encoding = new UnicodeEncoding();
        byte[] data = encoding.GetBytes(text);
        byte[] hash = sha1.ComputeHash(data);
        return crypt.SignHash(hash, CryptoConfig.MapNameToOID("SHA1"));
    }

Also die Frage ist wie kommt man den privaten Schlüssel aus .p12-Datei ?

  • Haben Sie versucht, den gleichen code für beide .PFX und .P12? Je nachdem, wo du dein P12 aus, es soll ganz so sein, glaube ich.
InformationsquelleAutor Alan Kuras | 2011-03-29
Schreibe einen Kommentar