Я делаю проект для школы. У меня есть связь с клиентом сервера с TcpClient и TcpListener. В начале я создаю ключ AES на сервере, а затем отправлю его клиенту с помощью RSA. У меня здесь нет проблем. Однако, когда я пытаюсь зашифровать строку на клиенте, а затем encrpyt на сервере, я получаю исключение.AesCryptoServiceProvider выбрасывает криптографическое исключение
- Перетяжка является недействительным и не может быть удален
Серверный код:
Byte[] bytes = new Byte[1024];
String data = null;
clientStream.Read(bytes, 0, bytes.Length); // preberemo iz streama
//Array.Clear(bytes, 0, bytes.Length);
// string temp = Encoding.UTF8.GetString(bytes11);
//temp = temp.Replace("\0", "");
//yte[] bytes = Encoding.UTF8.GetBytes(temp);
using (MemoryStream msEncrypt = new MemoryStream())
{
using (CryptoStream csEncrypt = new CryptoStream(msEncrypt, aes.CreateDecryptor(aes.Key,aes.IV), CryptoStreamMode.Write))
{
//StreamWriter swEncrypt = new StreamWriter(csEncrypt);
csEncrypt.Write(bytes, 0, bytes.Length);
}
byte[] encrypted = msEncrypt.ToArray();
string enc = Encoding.UTF8.GetString(encrypted, 0, encrypted.Length);
}
код клиента:
byte[] messg = Encoding.UTF8.GetBytes(messig);
// dobimo client stream
string enc = null;
using (MemoryStream msEncrypt = new MemoryStream())
{
using (CryptoStream csEncrypt = new CryptoStream(msEncrypt, aes.CreateEncryptor(aes.Key, aes.IV), CryptoStreamMode.Write))
{
csEncrypt.Write(messg,0,messg.Length);
}
byte[] encrypted = msEncrypt.ToArray();
enc = Encoding.UTF8.GetString(encrypted, 0, encrypted.Length);
}
byte[] data = new byte[1024];
data = Encoding.UTF8.GetBytes(enc);
//CryptoStream CryptStream = new CryptoStream(stream,aes.CreateEncryptor(aes.Key, aes.IV),CryptoStreamMode.Write);
stream.Write(data, 0, data.Length); // pošljem sporočilo
я получаю исключение на сервере при попытке использовать msEncrypt .ToArray();
Однако если я динамически выделяю Byte [], или я удаляю все нулевые значения, я получаю исключение, говорящее, что «входные данные не являются полным блоком».
Я не буду использовать (пока), пожалуйста, прочитайте мой ответ и решите, что вы делаете с этим ответом. –