Zusammenspiel von SlowAES und RijndaelManaged in .NET

Ich versuche, die AES-Verschlüsselung / -Entschlüsselung mithilfe der Javascript-Bibliothek einzurichtenSlowAES und dasRijndaelManaged Klasse in .NET.

Ich habe diese Methode nach dem Lesen gewähltdieser Beitrag, wo Cheeso es geschafft hat, diese beiden Verschlüsselungsmethoden zusammen zu spielen

"Bei meinen Tests der COM-umhüllten SlowAEs habe ich den CBC-Modus verwendet und die Verschlüsselung war vollständig kompatibel mit der RijndaelManaged-Klasse in .NET" - Cheeso

Ich habe den Javascript-Code aus der Windows Scripting Component von Cheeso, der neuesten Slowaes-Bibliothek, entnommen und mit dem folgenden Javascript-Skript getestet:

var key = "12345678901234567890123456789012";
var message = "watson?";
var decrypted;

slowAES.aes.keySize.SIZE_256;
slowAES.modeOfOperation.CBC;
put_PassPhrase(key);
var result = EncryptString(message);
decrypted = DecryptCommaDelimitedStringToString(result)
document.write("Key:" + key + "<br />original:" + message + "<br />Cypher:" + result + "<br />Decrypted:" + decrypted + "<br />IV(): " + get_IV());

Ich erhalte folgende Ausgabe:

Key:12345678901234567890123456789012
original:watson?
Cypher:245,159,1,1,168,1,1,143,1,1,146,1,1,239,117,1
Decrypted:watson? 
IV(): 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0

Ich habe folgendes gefundenes Beispiel modifiziertauf MSDN So versuchen Sie, die Verschlüsselung in C # abzugleichen:

public static void Main()
        {
            try
            {
                string original = "watson?";
                byte[] IV = new byte[16];   // match slowaes IV
                byte[] key = new System.Text.ASCIIEncoding().GetBytes("12345678901234567890123456789012");// match slowaes KEY

                RijndaelManaged myRijndael = new RijndaelManaged();
                myRijndael.BlockSize = 128;
                myRijndael.KeySize = 256;
                myRijndael.Mode = CipherMode.CBC;

                // Encrypt the string to an array of bytes.
                byte[] encrypted = encryptStringToBytes_AES(original, key, IV);

                // Decrypt the bytes to a string.
                string roundtrip = decryptStringFromBytes_AES(encrypted, key, IV);

                //Display the original data and the decrypted data.
                Console.WriteLine("Original:   {0}", original);
                Console.WriteLine("Round Trip: {0}", roundtrip);

            }
            catch (Exception e)
            {
                Console.WriteLine("Error: {0}", e.Message);
            }
        }

Beobachtung des Bytearrays:

-  encrypted {byte[16]} byte[]
  [0] 139 byte
  [1] 104 byte
  [2] 166 byte
  [3] 35 byte
  [4] 8 byte
  [5] 42 byte
  [6] 216 byte
  [7] 160 byte
  [8] 235 byte
  [9] 153 byte
  [10] 23 byte
  [11] 143 byte
  [12] 105 byte
  [13] 3 byte
  [14] 24 byte
  [15] 255 byte

Ich habe alle Auffülloptionen mit der verwalteten .NET-Klasse ausprobiert, kann die verschlüsselten Ausgaben jedoch nicht abgleichen. Kann mir jemand helfen?

Vielen Dank,

Bob

Antworten auf die Frage(1)

Ihre Antwort auf die Frage