AES C# <-> C++
От: Testus  
Дата: 22.08.10 20:56
Оценка:
Шифрую AES-ом данные в C#:
            Rijndael _aes = Rijndael.Create();
            byte[] _key = new byte[16];
            byte[] _iv = new byte[16];
            data[] data = new byte[8];
            byte[] encdata = null;

            MemoryStream ms = new MemoryStream();
            CryptoStream cs = new CryptoStream(ms, _aes.CreateEncryptor(_key, _iv), CryptoStreamMode.Write);

            cs.Write(data, 0, data.Length);
            cs.Close();

            encdata = ms.ToArray();

Результат: encdata — 16 байт (расшифровываются в C# обратно в 8 байт)

Реализацию для C++ взял из OpenSSL
Пытаюсь расшифровать следующим способом:
    byte _key[16];
    byte _iv[16];
    byte encdata[16];
    byte data[8];

    AES_KEY aeskey;
    AES_set_encrypt_key(_key, 128, &aeskey);
    AES_cbc_encrypt(encdata, data, 8, &aeskey, _iv, AES_DECRYPT);

Но вот загвоздка расшифровывает не правильно, по коду на сколько я понял ожидается длинна encdata и data одинаковая, а в C# у меня из 8 байт получилось 16 байт зашифрованных.

Как расшифровать ума не приложу?
Есть идеи?
Glück auf
Re: AES C# <-> C++
От: Testus  
Дата: 22.08.10 21:32
Оценка:
Здравствуйте, Testus, Вы писали:

T>Шифрую AES-ом данные в C#:

T>
T>            Rijndael _aes = Rijndael.Create();
T>            byte[] _key = new byte[16];
T>            byte[] _iv = new byte[16];
T>            data[] data = new byte[8];
T>            byte[] encdata = null;

T>            MemoryStream ms = new MemoryStream();
T>            CryptoStream cs = new CryptoStream(ms, _aes.CreateEncryptor(_key, _iv), CryptoStreamMode.Write);

T>            cs.Write(data, 0, data.Length);
T>            cs.Close();

T>            encdata = ms.ToArray();
T>

T>Результат: encdata — 16 байт (расшифровываются в C# обратно в 8 байт)

T>Реализацию для C++ взял из OpenSSL

T>Пытаюсь расшифровать следующим способом:
T>
T>    byte _key[16];
T>    byte _iv[16];
T>    byte encdata[16];
T>    byte data[8];

T>    AES_KEY aeskey;
T>    AES_set_encrypt_key(_key, 128, &aeskey);
T>    AES_cbc_encrypt(encdata, data, 8, &aeskey, _iv, AES_DECRYPT);
T>

T>Но вот загвоздка расшифровывает не правильно, по коду на сколько я понял ожидается длинна encdata и data одинаковая, а в C# у меня из 8 байт получилось 16 байт зашифрованных.

T>Как расшифровать ума не приложу?

T>Есть идеи?

Тьфу ты блин!
AES_set_encrypt_key — глупая опечатка нужно AES_set_decrypt_key... из счастье есть
Glück auf
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.