TLS v1.0, Шифрование сообщение EncryptedHandshakeMessage (AES-256)

193
30 января 2018, 07:34

Я пытаюсь зашифровать сообщение, при помощи AES (как клиент), но дело в том, что не совпадает последние 12 байтов:

СЕРВЕР - 3e106a0a312bdcc83d47f1768a53180ad8486bb188eb27aec1f1eede6d8a21a7 00d4a04e2882965a2b639b78c97bee40

КЛИЕНТ - 3e106a0a312bdcc83d47f1768a53180ad8486bb188eb27aec1f1eede6d8a21a7 f168b4bb4440b61b7b06e489457e6edc

Место несовпадения на новой строке. Алгоритм AES-256

byte[] Server_EncryptedHandshakeMessage = AesTool.Encrypt(Completed, client_write_key, client_write_iv, PaddingMode.PKCS7);

Обратите внимание - PaddingMode.PKCS7

Функция - Encrypt:

internal static byte[] Encrypt(byte[] message, byte[] key, byte[] iv, PaddingMode PadMode )
{
    AesCryptoServiceProvider Aes = new AesCryptoServiceProvider();
    Aes.Mode = CipherMode.CBC;
    Aes.KeySize = 128;
    Aes.Padding = PadMode;
    Aes.Key = key;
    Aes.IV = iv;
    ICryptoTransform encryptor = Aes.CreateEncryptor(key, iv);
    using (MemoryStream ms = new MemoryStream())
    {
        using (CryptoStream csDecrypt = new CryptoStream(ms, encryptor, CryptoStreamMode.Write))
        {
            using(BinaryWriter c = new BinaryWriter(csDecrypt))
            {
                c.Write(message);
            }
        }
        return ms.ToArray();
    }
}
Answer 1

Очень похоже на несовместимость PaddingMode клиента и сервера. Для тестирования используйте и там и там PaddingMode.Zeros, который заполнит остаток нулями. Подробнее можете почитать тут: msdn

.p.s примеры с байтами лучше всего приводить в hex виде (например 0x01, 0x02 или 01 02).

READ ALSO
C# Внедрение DLL в ресурсы

C# Внедрение DLL в ресурсы

Похожие темы были, но немного другого форматаКак я могу добавив dll в ресурсы (в частности я использую HtmlAgilityPack

240
javascript form data append из другой функции

javascript form data append из другой функции

В аякс запросе, формируется formdata

273
Считывание данных для графика JS

Считывание данных для графика JS

Добрый деньНа сервере есть код на python который принимает координаты, декодирует их и пишет в файл на сервере

206
vuejs Выполнение dispatch

vuejs Выполнение dispatch

Как правильно будет выполнить dispatch action модуля склада?

296