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

C# 为什么我的加密算法每次都返回相同的salt?,c#,encryption,salt,C#,Encryption,Salt,我已经制定了自己的加密和解密算法,但如果我调用crypting类并加密数据,它每次都会将相同的salt写入文件,但如果我再次启动应用程序,salt就不同了。下面是两个应用程序运行及其盐 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`9

我已经制定了自己的加密和解密算法,但如果我调用crypting类并加密数据,它每次都会将相同的salt写入文件,但如果我再次启动应用程序,salt就不同了。下面是两个应用程序运行及其盐

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
这是我的C语言加密代码#

公共字符串加密字符串(字符串文本)
{
随机rdn=新随机();
String[]textary=新字符串[]{text};

string alphabet=“qzwxecrvtbynumipalskdjfhgpmonibuvyctxrzewqaslkdfjhg~!@$%^&*()(+){124;\”:>您可能需要对随机数生成器进行不同的种子设定

Random在默认情况下使用系统时钟作为其种子,因此调用彼此非常接近的new Random()可以得到相同的种子编号


请参阅“实例化随机数生成器”一节这里:

我建议您应该正确地为随机数设置种子并重用同一个。无论如何,我的建议是不要试图编写自己的加密算法实现。使用一个著名的最新库。将
随机数
拉到方法之外,并将其设为类变量。您的方法可能已执行速度如此之快,以至于下一次加密在系统时间发生足够变化之前发生,以使新的
Random
实例产生不同的数字。任何人,从最无知的业余爱好者到最好的密码学家,都可以创建一个他自己无法破解的算法。使用随机数生成器“加密”(你实际上在做的是某种奇怪的编码)这是一个非常糟糕的主意。每次的结果都会不同?你不能解密。这有什么用?@LukePark Oh。当然你不能解密。加密字符串的值隐藏在数字中。在解密中,你忽略了除数字以外的所有内容。数字是解密的位置。你最好看看这里,这是我的解密和加密ypt算法:它只是..我关于加密的私人实验:D我知道它不好,我做它是为了练习我的技能。
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`
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;
    }