创建可解密的加密字符串

问题描述 投票:0回答:1

我需要存储一些加密数据,然后(第二次)读取原始值,我不需要很强的加密,就像用户无法操作这些字符串一样。

我正在尝试这段代码:

 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"));
 }
}

但是每次我加密一个字符串时,加密的字符串都会发生变化(我认为它必须保持不变,否则无法解密),并且我无法恢复该过程(解密)(解密过程总是令人难以理解)不同的字符串)。

请帮助我。

c# encryption .net-8.0
1个回答
0
投票

您必须在加密和解密之间保留相同的密钥

© www.soinside.com 2019 - 2024. All rights reserved.