Yan*_*ang 0 c# encryption algorithm hash encoding
我在编程示例中遇到了以下方法.这真的是加密算法吗?或者它更像是十六进制散列/不可逆编码算法?我看到使用按位移位和按位和使得我相信该方法具有数据丢失并且是不可逆的十六进制编码算法.
private string Encrypt(string key, string message)
{
string result = "";
var hexValues = "0123456789abcdef";
for (int i = 0, j = 0; i < message.Length; i++)
{
var a = (Int32)message[i];
var b = (Int32)key[j] & 10;
var encChar = a ^ b;
if (++j == key.Length)
{
j = 0;
}
result += hexValues[(encChar >> 4) & 15];
result += hexValues[encChar & 15];
}
return result;
}
Run Code Online (Sandbox Code Playgroud)
从本质上讲,该算法正在执行XOR加密,这是一种弱且容易破解的加密形式.
var encChar = a ^ b;
Run Code Online (Sandbox Code Playgroud)
位移用于获得对应于"加密"字符位置的十六进制值.
result += hexValues[(encChar >> 4) & 15];
result += hexValues[encChar & 15];
Run Code Online (Sandbox Code Playgroud)
&mask用于选择一个值来对象给定位置处的字符进行异或.它为密钥提供了"隐藏"的更改,这种做法有时通过默默无闻称为安全性(这不会增加实际的安全性).
var b = (Int32)key[j] & 10;
Run Code Online (Sandbox Code Playgroud)