Verwenden Sie C#und AES -Algorithmen, um die String
zu verschlüsseln und zu entschlüsselnIn diesem Artikel wird die String -String mit dem AES -Algorithmus (höherer Verschlüsselungsstandard (höherer Verschlüsselungsstandard) verschlüsselt und entschlüsselt. AES ist ein symmetrischer Verschlüsselungsalgorithmus, der eine starke Sicherheit bietet und häufig zum Schutz sensibler Daten verwendet wird.
.NET Framework bietet RijndaelManaged
Klasse, nämlich die Host -Implementierung eines AES -Algorithmus. Es bietet Verschlüsselungs- und Entschlüsselungsmethoden.
using System.Security.Cryptography; public class EncryptionManager { private static byte[] _salt = /* 请在此处插入自定义salt */; public static string EncryptStringAES(string plainText, string sharedSecret) { if (string.IsNullOrEmpty(plainText) || string.IsNullOrEmpty(sharedSecret)) throw new ArgumentNullException(); using (var aesAlg = new RijndaelManaged()) { // 使用共享密钥和salt生成密钥 using (var key = new Rfc2898DeriveBytes(sharedSecret, _salt)) { aesAlg.Key = key.GetBytes(aesAlg.KeySize / 8); } // 创建加密器 var encryptor = aesAlg.CreateEncryptor(aesAlg.Key, aesAlg.IV); // 加密文本 using (var msEncrypt = new MemoryStream()) { using (var csEncrypt = new CryptoStream(msEncrypt, encryptor, CryptoStreamMode.Write)) { using (var swEncrypt = new StreamWriter(csEncrypt)) { swEncrypt.Write(plainText); } } // 将加密后的字节转换为base64字符串 return Convert.ToBase64String(msEncrypt.ToArray()); } } } public static string DecryptStringAES(string cipherText, string sharedSecret) { if (string.IsNullOrEmpty(cipherText) || string.IsNullOrEmpty(sharedSecret)) throw new ArgumentNullException(); using (var aesAlg = new RijndaelManaged()) { // 使用共享密钥和salt生成密钥 using (var key = new Rfc2898DeriveBytes(sharedSecret, _salt)) { aesAlg.Key = key.GetBytes(aesAlg.KeySize / 8); } var cipherBytes = Convert.FromBase64String(cipherText); using (var msDecrypt = new MemoryStream(cipherBytes)) { aesAlg.IV = ReadByteArray(msDecrypt); // 创建解密器 var decryptor = aesAlg.CreateDecryptor(aesAlg.Key, aesAlg.IV); // 解密文本 using (var csDecrypt = new CryptoStream(msDecrypt, decryptor, CryptoStreamMode.Read)) { using (var srDecrypt = new StreamReader(csDecrypt)) { return srDecrypt.ReadToEnd(); } } } } } private static byte[] ReadByteArray(Stream s) { byte[] rawLength = new byte[sizeof(int)]; s.Read(rawLength, 0, rawLength.Length); byte[] buffer = new byte[BitConverter.ToInt32(rawLength, 0)]; s.Read(buffer, 0, buffer.Length); return buffer; } }
Dieser Code zeigt, wie die
Die Funktion wird verwendet, um IV (Initialisierungsvektor) aus dem Stream zu lesen. Denken Sie daran, mit potenziellen Abnormalitäten umzugehen. RijndaelManaged
Das obige ist der detaillierte Inhalt vonWie verschlüsseln und entschlüsseln Sie Strings in C# mit AES?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!