Я пытаюсь зашифровать сообщение, при помощи 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();
}
}
Очень похоже на несовместимость PaddingMode клиента и сервера. Для тестирования используйте и там и там PaddingMode.Zeros, который заполнит остаток нулями. Подробнее можете почитать тут: msdn
.p.s примеры с байтами лучше всего приводить в hex виде (например 0x01, 0x02 или 01 02).
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости