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)
SecureString 可能适合该法案:
代表应保密的文本.文本在使用时加密以保护隐私,并在不再需要时从计算机内存中删除.
也:
一个
SecureString对象是类似String的,因为它有一个文本值对象.但是,SecureString对象的值会自动加密,可以修改,直到应用程序将其标记为只读,并且可以通过应用程序或.NET Framework垃圾收集器从计算机内存中删除.
和
的一个实例的值
SecureString在实例被初始化时或者当值被修改被自动加密.您的应用程序可以呈现实例不可变,并通过调用该MakeReadOnly方法防止进一步修改.
但请注意,aA确定足够的用户将设法读取这样的密码 - 这可能需要时间和精力,但它可能