如何在应用程序内部保留加密密码?

Dev*_*per 1 .net c# security .net-4.0

我有一些接受许可证加密密钥的应用程序.所以这个应用程序应该保留在内部string encryptionPassword ,以便解密该字符串并获取一些数据.

哪个是保留string encryptionPassword在应用程序内部的最佳方法,所以如果用户试图破解它并且应该非常困难?

任何线索?

谢谢!!!

public static string Encrypt(string textToEncrypt, string encryptionPassword)
{
            var algorithm = GetAlgorithm(encryptionPassword);

            byte[] encryptedBytes;
            using (ICryptoTransform encryptor = algorithm.CreateEncryptor(algorithm.Key, algorithm.IV))
            {
                byte[] bytesToEncrypt = Encoding.UTF8.GetBytes(textToEncrypt);
                encryptedBytes = InMemoryCrypt(bytesToEncrypt, encryptor);
            }
            return Convert.ToBase64String(encryptedBytes);
}

public static string Decrypt(string encryptedText, string encryptionPassword)
{
            var algorithm = GetAlgorithm(encryptionPassword);

            byte[] descryptedBytes;
            using (ICryptoTransform decryptor = algorithm.CreateDecryptor(algorithm.Key, algorithm.IV))
            {
                byte[] encryptedBytes = Convert.FromBase64String(encryptedText);
                descryptedBytes = InMemoryCrypt(encryptedBytes, decryptor);
            }
            return Encoding.UTF8.GetString(descryptedBytes);
}
Run Code Online (Sandbox Code Playgroud)

Ode*_*ded 5

SecureString 可能适合该法案:

代表应保密的文本.文本在使用时加密以保护隐私,并在不再需要时从计算机内存中删除.

也:

一个SecureString对象是类似String的,因为它有一个文本值对象.但是,SecureString对象的值会自动加密,可以修改,直到应用程序将其标记为只读,并且可以通过应用程序或.NET Framework垃圾收集器从计算机内存中删除.

的一个实例的值SecureString在实例被初始化时或者当值被修改被自动加密.您的应用程序可以呈现实例不可变,并通过调用该MakeReadOnly方法防止进一步修改.

但请注意,aA确定足够的用户将设法读取这样的密码 - 这可能需要时间和精力,但它可能