以下是加密算法吗?如果是这样,它是可逆的吗?

时间:2014-10-15 19:05:47

标签: c# algorithm encryption encoding hash

我在编程示例中遇到了以下方法。这真的是加密算法吗?或者它更像是十六进制散列/不可逆编码算法?我看到使用按位移位和按位,这使我相信该方法有数据丢失,并且是一种不可逆的十六进制编码算法。

 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;
    }

1 个答案:

答案 0 :(得分:6)

这个算法的核心是执行XOR encryption,这是一种弱且容易破解的加密形式。

var encChar = a ^ b;

位移用于获得对应于&#34;加密&#34;的十六进制值。性格位置。

result += hexValues[(encChar >> 4) & 15];
result += hexValues[encChar & 15];

&amp; mask用于选择一个值来对象给定位置处的字符进行异或。它提供了一个隐藏的&#34;更改为密钥,有时通过默认设置称为安全性(这不会增加实际安全性)。

var b = (Int32)key[j] & 10;