Uzyskanie klasy SlowAES i RijndaelManaged w .NET do wspólnej gry

Próbuję skonfigurować szyfrowanie / deszyfrowanie AES przy użyciu biblioteki javascriptSlowAES iRijndaelManaged klasa w .NET.

Wybrałem tę metodę po przeczytaniuten post, gdzie Cheeso udało się połączyć te dwie metody szyfrowania

„W testach SlowAE zapakowanych w COM użyłem trybu CBC, a szyfrowanie było całkowicie zgodne z klasą RijndaelManaged w .NET” - Cheeso

Zrobiłem kod javascript z komponentu Windows Scripting Component Cheeso, najnowszych bibliotek slowaes i za pomocą następującego skryptu javascript przetestowałem:

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());

Otrzymuję następujące dane wyjściowe:

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

Zmodyfikowałem następujący przykład znalezionyw MSDN spróbować dopasować szyfrowanie w C #:

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);
            }
        }

Obserwuj tablicę bajtów:

-  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

Wypróbowałem wszystkie opcje dopełniania w zarządzanej klasie .NET, ale nie mogę dopasować zaszyfrowanych wyjść. Czy ktoś może mi pomóc?

Dzięki,

Kok

questionAnswers(1)

yourAnswerToTheQuestion