第一次接触异或运算,总体来说比哈希算法简单的多,无论是理解还是代码的难易度,唯一不好的是在固定了密钥之后,随机性就小了很多,所以安全性比起哈希算法还是有所差距。
原理在网站上很多都有所以就不再赘述了。程序的正确性尚不可知,不管了。
直接贴代码:
static void Main(string[] args)
{
int i,n;
string s_result=null, s_text, s_key;
char ch;
Console.WriteLine("请输入需要加密的字符串:");
s_text = Console.ReadLine();
Console.WriteLine("请输入加密的密钥:");
s_key = Console.ReadLine();
i f (s_text.Count() != s_key.Count())//判断长度是否相等
{
Console.WriteLine("加密字符串和字符串长度不等!");
}
else
{
for (i =0;i<= s_key.Length - 1; i++)//第一层循环把密钥的数字提取出来
{
n = s_key[i] - '0';
for (i = 0; i <= s_text.Length - 1; i++)//把字符类型转换为char
{
s_result = (char)(s_text[i] ^ n)+s_result;//进行异或运算
}
}
Console.WriteLine("加密后的字符串是:{0}",s_result);//输出结果
}
Console.ReadKey();
//System.ApplicationI
System.Environment.Exit(0);
}