加密/解密技术:
通过一次异或运算,生成密文,密文没有可读性,与原文风马牛不相及,这就是加密;
密文再经过一次异或运算,就会还原成原文,这就是解密的过程;
加密和解密需要相同的密钥,如果密钥不对,是无法成功解密的。
上面的加密算法称为对称加密算法,加密和解密使用同一个密钥。
如果加密和解密的密钥不同,则称为非对称加密算法。在非对称算法中,加密的密钥称为公钥,解密的密钥称为私钥,只知道公钥是无法解密的,还必须知道私钥。
实例:
string content = "GER";
string key = "BIO";
var content_char = System.Text.Encoding.Unicode.GetBytes(content);
var key_char = System.Text.Encoding.Unicode.GetBytes(key);
//加密
byte[] content_after_char = new byte[content_char.Length]; //加密后的字符数组
for (int i = 0; i < content_char.Length; i++)
{
content_after_char[i] = (byte)(content_char[i] ^ key_char[i]);
}
var content_after_string = System.Text.Encoding.Unicode.GetString(content_after_char);
//解密
byte[] content_before_char = new byte[content_char.Length]; //解密后的字符数组
for (int i = 0; i < content_char.Length; i++)
{
content_before_char[i] = (byte)(content_after_char[i] ^ key_char[i]);
}
var content_before_string = System.Text.Encoding.Unicode.GetString(content_before_char);
Console.WriteLine(string.Format("原文:{0}", content));
Console.WriteLine(string.Format("加密后的内容:{0}", content_after_string));
Console.WriteLine(string.Format("解密后的内容:{0}", content_before_string));