我需要存储一些加密数据,然后(第二次)读取原始值,我不需要很强的加密,就像用户无法操作这些字符串一样。
我正在尝试这段代码:
public static string Encrypt(string plainText)
{
if (Settings.LicenseOK())
{
byte[] plainTextBytes = Encoding.UTF8.GetBytes(plainText);
var symmetricKey = Aes.Create();
//symmetricKey.Mode = CipherMode.CBC;
symmetricKey.Padding = PaddingMode.Zeros;
ICryptoTransform encryptor = symmetricKey.CreateEncryptor();
using MemoryStream ms = new MemoryStream();
using CryptoStream cs = new CryptoStream(ms, encryptor, CryptoStreamMode.Write);
cs.Write(plainTextBytes, 0, plainTextBytes.Length);
cs.FlushFinalBlock();
ms.Flush();
return Convert.ToBase64String(ms.ToArray(), Base64FormattingOptions.None);
}
else
throw (new Exception("Errore nella DLL GDWS"));
}
public static string Decrypt(string cipherText)
{
if (Settings.LicenseOK())
{
byte[] cipherTextBytes = Convert.FromBase64String(cipherText);
var symmetricKey = Aes.Create();
//symmetricKey.Mode = CipherMode.CBC;
symmetricKey.Padding = PaddingMode.Zeros;
byte[] plainTextBytes = new byte[cipherTextBytes.Length];
ICryptoTransform decryptor = symmetricKey.CreateDecryptor();
using MemoryStream ms = new MemoryStream(cipherTextBytes);
using CryptoStream cs = new CryptoStream(ms, decryptor, CryptoStreamMode.Read);
cs.Read(plainTextBytes);
return Encoding.UTF8.GetString(plainTextBytes);
}
else
throw (new Exception("Errore nella DLL GDWS"));
}
}
但是每次我加密一个字符串时,加密的字符串都会发生变化(我认为它必须保持不变,否则无法解密),并且我无法恢复该过程(解密)(解密过程总是令人难以理解)不同的字符串)。
请帮助我。
您必须在加密和解密之间保留相同的密钥。