Wie generieren Sie starke-Benennung SNK-Schlüssel (Datei mit .net-Bibliotheken
Mein Produkt muss in der Lage sein zu generieren .snk-Dateien (ohne Microsoft SDKs auf dem system installiert).
Ich habe erzeugen können, arbeitet SNK-Datei, aber ich kann nicht scheinen, um es zu arbeiten, wenn ein Kennwort anzugeben.
Kann jemand mir einige Hinweise?
Dies ist, was ich habe, so weit:
internal static void CreateKeyPairFile(string fileName, int keySize, string password)
{
if ((keySize % 8) != 0)
{
throw new CryptographicException("Invalid key size. Valid size is 384 to 16384 mod 8. Default 1024.");
}
CspParameters parms = new CspParameters();
parms.KeyNumber = 2;
if (null != password)
{
var passwordString = new System.Security.SecureString();
foreach (char c in password)
{
passwordString.AppendChar(c);
}
parms.Flags = CspProviderFlags.UseUserProtectedKey;
parms.KeyPassword = passwordString;
}
RSACryptoServiceProvider provider = new RSACryptoServiceProvider(keySize, parms);
byte[] array = provider.ExportCspBlob(!provider.PublicOnly);
using (FileStream fs = new FileStream(fileName, FileMode.Create, FileAccess.Write))
{
fs.Write(array, 0, array.Length);
}
}
- Bei "Kennwort" ist nicht null " - Anbieter.ExportCspBlob" erzeugt den Fehler "Ungültiger Typ angegeben"
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den KeyPassword parameter, den Sie verwenden, ist bestimmt auch für andere Zwecke als die, die Sie versuchen, zu verwenden es für. Aus der Dokumentation:
Siehe auch die Antwort auf diese Frage: Einfache Nutzung des RSACryptoServiceProvider KeyPassword ausfällt
Neben diesem, es scheint nicht, wie Sie sich schützen können .snk-Dateien mit einem Passwort. Was Sie tun können, in diesem Fall ist die Verwendung eines PKCS#12 - Datei (.pfx), anstatt die verwendet werden, um Zeichen der Baugruppen und auch Kennwort geschützt werden kann. Sie können generieren einer PKCS#12 Datei mit einer Bibliothek wie BouncyCastle.NET. Es ist eine gute Dokumentation gibt es, wie dies zu tun, also ich werde nicht ins detail gehen hier.
Siehe zum Beispiel: Ist es möglich, programmgesteuert generieren eines X. 509-Zertifikat mit nur C#?