为什么我的加密算法每次都返回相同的盐?

时间:2016-12-03 16:18:18

标签: c# encryption salt

我已经制作了自己的加密和解密算法,但是如果我调用加密类并加密数据,它每次都会将相同的盐写入文件,但如果我再次启动应用程序,则盐是不同的。这里有2个应用程序及其盐。

50|Mmlv"!QM17=@QwjT`11(f&}G14[bxNpN19"V+W_r`
41|Mmlv"!QM17=@QwjT`6(f&}G6[bxNpN14"V+W_r`15j.zVN6<|N-}
92|Mmlv"!QM
93|Mmlv"!QM
92|Mmlv"!QM91=@QwjT`93(f&}G
86|Mmlv"!QM88=@QwjT`
91|Mmlv"!QM93=@QwjT`
93|Mmlv"!QM

第二

50!qKR}H!;15#X:y/O`11{Q'b|1TL[PYecoj19?*V`E|L?-
41!qKR}H!;17#X:y/O`6{Q'b|6TL[PYecoj14?*V`E|L?-15M|;:Goln6&.E:yy=>
92!qKR}H!;
93!qKR}H!;
92!qKR}H!;91#X:y/O`93{Q'b|
87!qKR}H!;93#X:y/O`
86!qKR}H!;93#X:y/O`
87!qKR}H!;88#X:y/O`

这是我在C#中的加密代码

public string encryptString(string text)
    {
        Random rdn = new Random();
        String[] textArray = new String[] { text };
        string alphabet = "qzwxecrvtbynumiopalskdjfhgPMONIBUVYCTXRZEWQASLKDFJHG~!@#$%^&*()_+}{|\":><?`-=][\';/., 9632587410";
        string hashedText = "";
        for (int i = 0; i < text.Length; i++)
        {
            string salt = "";
            int saltCount = rdn.Next(low_range, high_range);
            for (int e = 0; e < saltCount; e++)
            {
                int alphabetSaltCount = rdn.Next(0, alphabet.Length - 11);
                salt += alphabet[alphabetSaltCount];
            }
            hashedText += alphabet.IndexOf(text[i]).ToString() + salt;
        }
        return hashedText;
    }

1 个答案:

答案 0 :(得分:1)

您可能需要以不同方式为随机数生成器播种。

Random默认使用系统时钟作为其种子,因此调用新的Random()非常接近彼此可能会以相同的种子数结束。

参见&#34;实例化随机数发生器&#34;在这里:https://msdn.microsoft.com/en-us/library/system.random(v=vs.110).aspx