Verschlüsselungsalgorithmus / Bibliothek für .NET 2.0 + C ++
-
11-07-2019 - |
Frage
Ich brauche einen Standard, Microsoft geliefert, Verschlüsselungsbibliothek, die sowohl für .NET 2.0 und C ++ funktioniert. Was würden Sie vorschlagen?
Wir finden, dass AES nur .NET 3.5 (und in C ++) angeboten in
Wir finden, dass Rijndael .NET 2.0 in verwendet wird, aber in dem Standard C ++ Bibliotheken nicht verfügbar ist.
Wenn ich falsch bin (sehr gute Chance), können Sie mir zeigen in die richtige Richtung?
Worst-Case-Szenario, nehme ich mir den Rijndael-Algorithmus von .NET aufrufe kann PInvoke verwenden, aber ich würde lieber eine native Lösung.
Lösung
Wir tun erfolgreich eine ähnliche Sache, die ich hoffe, Ihnen helfen könnte:
C ++ CryptoAPI
- CryptoAPI reine Win32 ist (c / c ++), beheimatet in allen Microsoft-Betriebssysteme.
- Verwenden Sie Enhanced Cryptographic Provider (
MS_ENHANCED_PROV
) - Verwenden Sie Triple DES (
CALG_3DES
) Algorithmus
.NET TripleDes Provider
- Verwenden Sie TripleDESCryptoServiceProvider auf der .NET-Seite.
Side Hinweise
- Wir vermeiden CAPICOM wie die Pest, da die Bereitstellung Alpträume, die mit ihm kommen die Mühe nicht wert sind.
- Byte-Reihenfolge auf der .NET-Seite kann manchmal ins Spiel kommen. Zum Beispiel, um einen Schlüssel zu verbrauchen, die auf der C ++ (CryptoAPI) Seite generiert wird, müssen Sie den Byte-Array umgekehrt vor der Verwendung innerhalb der TripleDESCryptoServiceProvider.
Wenn Sie weitere Details mögen bitte einen Kommentar hinterlassen und ich kann mehr geben. Glückliches Krypto!
Andere Tipps
AES Rijndael und ist im Wesentlichen der gleiche Algorithmus mit einer Beschränkung der Blockgröße und Verschlüsselungs-Modus. So lange, wie Sie mit der Einschränkungen (die nicht belastend sind) Sie können sie austauschbar verwendet werden.
3DES ist über CAPICOM zur Verfügung. Siehe hier für Info.
Windows enthält eine C / C ++ AES-Verschlüsselung Bibliothek als Teil des AES Cryptographic Services Provider . Es ist geeignet für den Einsatz innerhalb von nativen C / C ++ Anwendungen.