Gut für Starter Tasten sind keine Zeichenfolgen, Schlüssel sind binäre Blobs. PlainText ist das gleiche, es ist nicht wirklich Text, auch hier ist es ein binärer Blob.
Jetzt können Sie natürlich Strings in Byte-Arrays mit Encoding.UTF8.GetBytes(message)
konvertieren, jedoch beim Konvertieren von Schlüsseln hin und her ist es ein wenig komplizierter, verwenden Sie normalerweise Convert.ToBase64String
und Convert.FromBase64String
.
Vergessen Sie nicht, dass Blockchiffren der Initialisierungsvektor, auch noch etwas brauchen, also wirklich Ihre Methode Signaturen sollten
byte[] Encrypt(byte[] plainText, byte[] key, byte[] iv)
byte[] Decrypt(byte[] cipherText, byte[] key, byte[] iv)
Der Schlüssel sein und IVs müssen kryptografisch sicheren Zufallszahlen, don sein‘ t geben Sie sie einfach ein und verwenden Sie nicht die Random-Funktion von C#. Die Größe des Schlüssels und der IV hängt vom verwendeten Verschlüsselungsalgorithmus ab und kann über die Eigenschaften der Klassen abgerufen werden.
generieren ein CSRPNG Sie etwas tun, wie
RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider();
byte[] key = new byte[algorithm.KeySizeValue/8];
rng.GetBytes(key);
byte[] iv = new byte[algorithm.BlockSizeValue/8];
rng.GetBytes(iv);
Sie auch die Rfc2898DeriveBytes Klasse verwenden kann, einen Schlüssel und IV von einem Passwort abgeleitet und ein Salz, aber auch hier das Salz sollte eine kryptografisch sichere Zufallszahl sein . Sie sollten auch beachten, wenn Sie einen symmetrischen Algorithmus erstellen einen sicheren Schlüssel und IV für Sie generiert wird.
Auf diese Weise können Sie dann die richtige Kodierung für Ihren Text wählen, sei es UTF8, ASCII oder was auch immer. Die Links haben genug Proben, so dass das Schneiden und Einfügen hier ziemlich sinnlos ist.
Ist Rijndael nicht symmetrisch? –
Ich glaube, dass es –
ist Ich würde Rijndael empfehlen, dann :) –