一个按照密钥表加密的程序

呵呵,小弟我第一次写博文,而且实力还一般化,还请各个大侠们多多提出宝贵意见。

最近有个同学要做一个按照密钥表加密的程序,

 

下面是密钥表:

W3*25D&e@KqQ%nE(ofH8^9]yi$.c?a0!ZV-Shqe6EGhams7dfLKAu,nh1BSDFi45w

每个字符转换后的数字是:取各个字符的所在index+1;

char[] before = "W3*25D&e@KqQ%nE(ofH8^9]yi$.c?a0!ZV-Shpb6EGgTms7dtLkAu,Nj1BRCFI4zwjlMOxPrRYUvX".ToCharArray();

我先把密钥表中的字符串复制到一个char[]类型的变量before中;

在加密的按钮中添加事件:

char[] text = textBox1.Text.ToCharArray();
StringBuilder sbr
= new StringBuilder();
for (int i = 0; i < text.Length; i++)
{
object txt = EncFunction(before, text[i]);
sbr.Append(txt);
if (txt.ToString() == " ")
sbr.Remove(sbr.Length
- 2, 1);
}
sbr
= sbr.Remove(sbr.Length - 1, 1);
textBox2.Text
= sbr.ToString();

首先将textBox1中Text复制到一个char[]类型的变量text中;然后一个for循环;

在这个循环中,有一个方法:EncFunction(Array arr, object obj),是返回要显示出的数字加一个'.',

private string EncFunction(Array arr, object obj)
{
int index = Array.IndexOf(arr, obj);
return index == -1 ? " " : (index + 1).ToString() + ".";
}

一个一个的追加到stringbuilder中,最后退出循环,赋值。

输入:www www

显示:111 111

接下来是解密:

通过把数字-1传进去,返回出before数组中指定index的值

StringBuilder sbr = new StringBuilder();
string[] str1 = textBox2.Text.Split(' ');
for (int y = 0; y < str1.Length; y++)
{
string[] str2 = str1[y].Split('.');
for (int z = 0; z < str2.Length; z++)
sbr.Append(before[
int.Parse(str2[z]) - 1]);
sbr.Append(
" ");
}
sbr.Remove(sbr.Length
- 1, 1);
textBox3.Text
= sbr.ToString();
posted @ 2011-04-20 22:20  Michael Sun  阅读(394)  评论(0编辑  收藏  举报