public string ExecVigenereCipher(Mode mode, CipherVigenereDto dto) { int d = mode == Mode.Encrypt ? 1 : -1; int pwi = 0, tmp; var ns = ""; dto.Input = dto.Input.ToUpper(); dto.Key = dto.Key.ToUpper(); foreach (char t in dto.Input) { if (t < 65) { continue; } tmp = t - 65 + d * (dto.Key[pwi] - 65); if (tmp < 0) { tmp += 26; } ns += Convert.ToChar(65 + tmp % 26); if (++pwi == dto.Key.Length) { pwi = 0; } } return(ns); }
public void CheckIfVigenereCipherWorksCorrectly(string input, string key, string encryptedInput, Mode mode) { var service = new CipherService(); var dto = new CipherVigenereDto { Input = input, Key = key }; string actual = service.ExecVigenereCipher(mode, dto); Assert.AreEqual(encryptedInput, actual); }
public async Task <IActionResult> GetVigenereCipherDecode([FromQuery] CipherVigenereDto dto) { string result = _cipherService.ExecVigenereCipher(Mode.Decrypt, dto); return(Ok(result)); }