-3

我正在使用以下代码应用凯撒密码算法,但效果不佳

编码

foreach (char t in richTextBox1.Text)
        {
            char encrypted = (char)(t + 3);
            richTextBox2.Text = encrypted.ToString();
        }

当纯文本是“mostafa”时,返回“d”只有这个取最后一个字符我能做什么。

谢谢

4

4 回答 4

1

试试这个:

StringBuilder enrypted = new StringBuilder();
foreach (char t in richTextBox1.Text)
{
    encrypted.Append((char)(t + 3));                
}
richTextBox2.Text = encrypted.ToString();
于 2012-04-06T16:15:27.947 回答
1
foreach (char t in richTextBox1.Text)
{
    char encrypted = (char)(t + 3);
    richTextBox2.Text = encrypted.ToString();
}

因为您将 分配richTextBox2.Text给单个字符。最后一个恰好是显示的那个。您的结果不是累积的。

你可以这样做:

var sb = new StringBuilder();
foreach (char t in richTextBox1.Text)
{
    char encrypted = (char)(t + 3);
    sb.Append(encrypted);
}
richTextBox2.Text = sb.ToString();
于 2012-04-06T16:15:32.863 回答
1

改变

richTextBox2.Text = encrypted.ToString();

richTextBox2.Text += encrypted.ToString();
于 2012-04-06T16:15:57.653 回答
0

因为我真的很喜欢 LINQ

char[] text = richTextBox1.Text.ToCharArray();
richTextBox2.Text = new String(text.Select(ch => (char)(ch + 3)).ToArray());
于 2012-04-06T16:26:28.223 回答