Я пытаюсь создать клиент и сервер для безопасного и зашифрованного файла с клиента на сервер. Сначала я буду использовать RSA для отправки ключа DES между двумя сторонами (от клиента к серверу). Я отправил публикацию RSA, используя ее, и отправил ключ DES, зашифрованный на сервер, и расшифрованный. Затем я добавил длину имени файла, имя файла и данные (зашифрованные) в массив байтов, который будет отправлен на сервер. Дешифруя файл с помощью DES, я получил неправильное исключение данных, поэтому я подумал, что либо файл отправлен неправильно, либо DES-код был отправлен неправильно с клиента на сервер. Также файл может быть расшифрован в начале координат.Ошибка Bad Data при дешифровании
Вот код клиента:
//encrypt the file with the des key
byte [] encryptedFile = DESEncrypt(fileBytes);
MessageBox.Show("enc file length " + encryptedFile.Length);
//send the file
byte[] k = DESdecrypt(encryptedFile);
byte[] fileNameByte = Encoding.ASCII.GetBytes(Path.GetFileName(filePath.Text));
byte[] clientData = new byte[4 + fileNameByte.Length + encryptedFile.Length];
byte[] fileNameLen = BitConverter.GetBytes(fileNameByte.Length);
fileNameLen.CopyTo(clientData, 0);
fileNameByte.CopyTo(clientData, 4);
encryptedFile.CopyTo(clientData, 4 + fileNameByte.Length);
soc.Send(clientData);
здесь код сервера:
byte[] clientData = new byte[1024 * 5000];
int receivedBytesLen = s.Receive(clientData);
byte[] b = clientData;
int fileNameLen = BitConverter.ToInt32(clientData, 0);
fileName = Encoding.ASCII.GetString(clientData, 4, fileNameLen);
byte[] l = Encoding.ASCII.GetBytes(fileName);
Console.WriteLine("Client:{0} connected & File {1} started received.", s.RemoteEndPoint, fileName);
Console.WriteLine("buffer size : ", b.Length);
Console.WriteLine("index : ", 4 + fileNameLen);
string temp = System.Text.Encoding.UTF8.GetString(b, 3 + fileNameLen, receivedBytesLen);
fileBytes = System.Text.Encoding.UTF8.GetBytes(temp);
Console.WriteLine("rec file");
}
catch (Exception exx)
{
Console.WriteLine(exx.ToString());
Console.Read();
}
//decrypt
byte[] decryptedFile = null;
try
{
decryptedFile = DESdecrypt(fileBytes);
}
catch(Exception exx)
{
Console.WriteLine(exx.ToString());
Console.Read();
}
Возможно, связанный/такой же пользователь: http://stackoverflow.com/questions/10362409/cannot-decrypt-rsa-encrypted-key – CodesInChaos
первый не тот же пользователь. во-вторых, проблема решена, я получал 1 неверный байт из полученного файла. например, я использую (4-1000), а зашифрованные данные - от (5-1001) - это просто неправильный способ получения моих данных из блока. – user1362274