为什么我的加密算法每次总是 returns 相同的盐?

Why my encrypt algorithm always returns same salt every time?

我已经做了自己的加密和解密算法,但是如果我调用加密class和加密数据,它每次都会将相同的salt写入文件,但是如果我再次启动应用程序,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;
    }

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

Random 默认使用系统时钟作为其种子,因此调用彼此非常接近的 new Random() 最终可能会得到相同的种子编号。

请参阅此处的 "Instantiating the random number generator" 部分:https://msdn.microsoft.com/en-us/library/system.random(v=vs.110).aspx