我正在尝试在 C# 中加密一个字符串:
static public string Encrypt(char[] a)
{
for (int i = 0; i < a.Length; i++)
{
a[i] -= (char)(i + 1);
if (a[i] < '!')
{
a[i] += (char)(i + 20);
}
}
return new string(a);
}
现在,当我输入这个字符串时:
"Qui habite dans un ananas sous la mer?".
加密结果如下:
`Psf3c[[ak[3XT`d3d\3MYKWIZ3XSXU3L@?JAMR`
在@之后有一个无法识别的字符。我不知道它是如何到达那里的,我也不知道为什么。
如果我尝试解密它(使用这种方法:)
static public string Decrypt(char[] a)
{
for (int i = 0; i < a.Length; i++)
{
a[i] += (char)(i + 1);
if ((a[i] - 20) - i <= '!')
{
a[i] -= (char)(i + 20);
}
}
return new string(a);
}
这是(不正确的)输出:
Qui habite dans un ananas sous laamerx。
如何允许加密例程访问 Unicode 字符?