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;
            }
        }
示例#2
0
        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;
            }
        }
示例#3
0
        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());
            }
        }