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 habete dans un ananas sous laamerx.
暗号化ルーチンが Unicode 文字にアクセスできるようにするにはどうすればよいですか?