private async void Start() { StatusString = "Generating key file..."; try { long bytesCount = new FileInfo(SourceFilePath).Length; await Vernam.GenerateKeyFileAsync(_keyFilePath, bytesCount, 80_000); FileStream inKeyStream = new FileStream(_keyFilePath, FileMode.Open, FileAccess.Read); Start(Vernam.Get(inKeyStream)); } catch (Exception e) { StatusString = "Error: " + e.Message; } }
public VernamDecryptVM(string filePath, string destFilePath, string keyFilePath, bool isDeleteAfter) : base(isDeleteAfter, CryptoDirection.Decrypt) { SourceFilePath = filePath; DestFilePath = destFilePath; CryptoName = "Vernam"; try { FileStream inKeyStream = new FileStream(keyFilePath, FileMode.Open, FileAccess.Read); Start(Vernam.Get(inKeyStream)); } catch (Exception e) { StatusString = "Error open key stream: " + e.Message; } }
public async Task <ActionResult <string> > Post(IFormFile message, IFormFile key) { byte[] fileBytesMessage, fileBytesKey; if (message == null || key == null) { ModelState.AddModelError("Error", "Некорректные параметры"); return(BadRequest(ModelState)); } if (message.Length > 0 && key.Length > 0) { using (var ms = new MemoryStream()) { message.CopyTo(ms); fileBytesMessage = ms.ToArray(); } using (var ms = new MemoryStream()) { key.CopyTo(ms); fileBytesKey = ms.ToArray(); } if (fileBytesKey.Length != fileBytesMessage.Length) { ModelState.AddModelError("Error", "Длина ключа и сообщения не совпадают"); return(BadRequest(ModelState)); } var vernam = new Vernam(fileBytesKey); var result = vernam.Encode(fileBytesMessage); var path = "(Vernam)" + message.FileName; using (var fs = System.IO.File.Create(_environment.WebRootPath + "/" + path)) { fs.Write(result, 0, result.Count()); fs.Flush(); return(path); } } else { return(BadRequest()); } }