/// <summary> /// Принимает файл и сразу шифрует принимаемый поток /// Необходимо для исключения нахождения на сервре незашифрованного файла /// </summary> /// <param name="fileName">Имя создаваемого файлв</param> /// <param name="key">Пользовательский ключ шифрования</param> /// <returns>Результат</returns> public bool ReciveEncryptedFile(string fileName, string key) { _cryptoController.Key = key; var byteFormatter = new BinaryFormatter(); using (var fs = new FileStream(fileName, FileMode.Create)) { do { object recivedObj; try { recivedObj = byteFormatter.Deserialize(_stream); } catch (Exception) { return(false); } var bytes = (byte[])recivedObj; if (bytes.Length == CheckBufferSize) { if (bytes.Any(bt => bt == byte.MaxValue)) { break; } } if (bytes.Length % 8 != 0) { var subBytes = new byte[(8 - bytes.Length % 8) + 8]; subBytes[subBytes.Length - 1] = (byte)(8 - bytes.Length % 8); bytes = bytes.Concat(subBytes).ToArray(); } //шифрование принятого массива байт bytes = _cryptoController.GostEncryptBytes(bytes); fs.Write(bytes, 0, bytes.Length); } while (true); } return(true); }