Шифрую 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 байт зашифрованных.
Как расшифровать ума не приложу?
Есть идеи?
Здравствуйте, 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... из счастье есть