protected override byte[] DecodeBytes(byte[] data, SecureString password) { using (var fish = new Twofish()) { var key = HashPassword(password, KEY_SIZE); var iv = data.Take(IV_SIZE).ToArray(); fish.Mode = CipherMode.CBC; fish.Key = key; fish.IV = iv; var decryptor = fish.CreateDecryptor(key, iv); using (var msDecrypt = new MemoryStream(data.Skip(IV_SIZE).ToArray())) using (var csDecrypt = new CryptoStream(msDecrypt, decryptor, CryptoStreamMode.Read)) { return TrimRightNull(ReadToEnd(csDecrypt)); } } }