Как зашифровать и расшифровать строку с помощью алгоритма AES в ASP.NET с C#?
Я хочу зашифровать и расшифровать строку с помощью алгоритма AES в asp.net с помощью c#. Я хочу зашифровать строку с помощью ключа, который может быть случайно сгенерирован и расшифрован, и получить строку, зашифрованную в алгоритме AES. Я пробовал шифрование и дешифрование в AES, но расшифрованное значение не совпадает со строкой, которую я зашифровал.Кроме того, мне нужно сгенерировать ключ шифрования случайным образом. В настоящее время я покончил с ключом, полученным статически.
Что я уже пробовал:
Выполненный код выглядит следующим образом:
Encryption Method public static string AES_Encrypt(string clearText, ref string keyStr) { string EncryptionKey = "MAKV2SPBNI99212"; byte[] clearBytes = Encoding.Unicode.GetBytes(clearText); using (Aes encryptor = Aes.Create()) { Rfc2898DeriveBytes pdb = new Rfc2898DeriveBytes(EncryptionKey, new byte[] { 0x49, 0x76, 0x61, 0x6e, 0x20, 0x4d, 0x65, 0x64, 0x76, 0x65, 0x64, 0x65, 0x76 }); byte[] key=new byte[16]; key= pdb.GetBytes(16); encryptor.Key =key; encryptor.IV = key; keyStr = System.Text.Encoding.UTF8.GetString(key); using (MemoryStream ms = new MemoryStream()) { using (CryptoStream cs = new CryptoStream(ms, encryptor.CreateEncryptor(), CryptoStreamMode.Write)) { cs.Write(clearBytes, 0, clearBytes.Length); cs.Close(); } clearText = Convert.ToBase64String(ms.ToArray()); } } return clearText; } Decryption Method public static string AES_Decrypt(string cipherText, Aes encryptor) { //string EncryptionKey = "MAKV2SPBNI99212"; byte[] cipherBytes = Convert.FromBase64String(cipherText); //using (Aes encryptor = Aes.Create()) //{ //Rfc2898DeriveBytes pdb = new // Rfc2898DeriveBytes(EncryptionKey, new byte[] { 0x49, 0x76, 0x61, 0x6e, 0x20, 0x4d, 0x65, 0x64, 0x76, 0x65, 0x64, 0x65, 0x76 }); //encryptor.Key = pdb.GetBytes(16); //encryptor.IV = pdb.GetBytes(16); using (MemoryStream ms = new MemoryStream()) { using (CryptoStream cs = new CryptoStream(ms, encryptor.CreateDecryptor(), CryptoStreamMode.Write)) { cs.Write(cipherBytes, 0, cipherBytes.Length); cs.Close(); } cipherText = Encoding.Unicode.GetString(ms.ToArray()); } // } return cipherText; }
F-ES Sitecore
Я уверен, что если вы загуглите "c# aes encrypt decrypt", то найдете множество рабочих примеров. Если вы хотите, чтобы ключ был случайным, вам понадобится какой-то способ убедиться, что тот, кто расшифровывает текст, знает, что это за случайный ключ. Выбранный вами механизм может легко сделать ваш код небезопасным.
CPallini
Мой виртуальный 5.