Klingt so, als müssten Sie sich in die Klasse Rfc2898DeriveBytes einlesen.
Rfc2898DeriveBytes.GetBytes();
Es gibt eine Methode (siehe oben), mit der Sie die Größe von Byte-Arrays, die in die Eigenschaften .Key und .IV eines symmetrischen Verschlüsselungsalgorithmus eingegeben werden, einfach durch Eingabe eines int-Wertes anpassen können. Das offizielle MS 70-536 Buch schlägt vor, dies programmatisch zu tun, indem man die KeySize Eigenschaft / 8 teilt.
z.B. TripleDes oder AESManaged. Unabhängig davon, welchen Algorithmus Sie verwenden, hat der Algorithmus selbst einige Voraussetzungen, die zuerst erfüllt werden müssen. So müssen z. B. die Bedingungen für die Schlüsselgröße erfüllt werden. Die RunTime füllt automatisch die Eigenschaften und Felder aus und wählt die besten und stärksten Werte für Sie aus. Aber die IV und der Schlüssel müssen von Ihnen kommen. Auf diese Weise können Sie Folgendes tun:
RijndaelManaged myAlg = new RiRijndaelManaged();
byte[] salt = Encoding.ASCII.GetBytes("Some salt value");
Rfc2898DeriveBytes key = new Rfc2898DeriveBytes("some password", salt);
myAlg.Key = key.GetBytes( myAlg.KeySize / 8);
myAlg.IV = key.GetBytes( myAlg.BlockSize / 8);
// myAld should now fully set-up.
Oben können Sie sehen, was ich meine, wenn ich es pro-grammatisch mache, denn es sollte ziemlich genau alles für Sie erledigen, ohne dass Sie auch nur ein Auge zudrücken müssen, um die Voraussetzungen zu erfüllen.
Das Microsoft 70-536 Buch besagt, dass die .Key-Eigenschaften die von Ihnen angegebenen Byte-Arrays erwarten in Bytes und nicht in Bits. Die RFC-Klasse arbeitet in Bytes, während die KeySize-Eigenschaft eines Algorithmus in Bits arbeitet. 1 Byte = 8 Bits. Sie sehen, worauf das hinausläuft ... ? Dies sollte Ihnen eine Vorstellung davon geben, warum das obige Code-Beispiel so gemacht ist, wie es ist! Ich habe es studiert und es ergibt für mich verdammt viel Sinn!
Die obige Antwort sollte es Ihnen ermöglichen, Ihr Algorithmus-Objekt mit dem übergebenen Passwort und einem statischen Salt-Wert zu erstellen, der an beiden Enden hart kodiert werden kann. Das Einzige, was Sie tun müssen, ist, sich Gedanken darüber zu machen, wie Sie sicherstellen, dass die unter .Key und .IV gespeicherten Byte-Arrays sicher zu einem Empfänger transportiert werden, damit dieser die von Ihnen verschlüsselte Nachricht erfolgreich entschlüsseln kann. Durch sichere Rekonstruktion desselben Algorithmusobjekts.
OBTW:
AESManaged hat eine Schlüsselgröße req': 128Bits = 16 Bytes !!! (8*8 = 64, 64Bit / 8Bits pro Byte = 8 Bytes) Daher
64*2 = 128Bit, 8*2, ==> 16Byte Schlüsselgröße !
256Bit = 32Bytes !!!!
Laut dem offiziellen 70-536 Training Kit Book ist Aes auf eine Schlüsselgröße von 128 Bit beschränkt. 256 Bits, 192 und 128 Schlüsselgrößen können beispielsweise mit der Rijndael-Klasse verwendet werden.
Andererseits können Sie den ganzen Mist vergessen und stattdessen einfach die Methoden .GenerateKey und GenerateIV verwenden, um sich die Mühe zu ersparen, ein gemeinsam genutztes und vereinbartes Kennwort und statische Salt-Werte auszuwählen. Ihr einziges Problem besteht darin, einen Weg zu finden, die Schlüssel- und IV-Byte-Arrays zu speichern und abzurufen. Binäre Formatierer? .