C#およびAESアルゴリズムを使用して、文字列を暗号化して復号化する
この記事では、文字列をC#以下の標準(AES)アルゴリズムで暗号化および復号化する方法を紹介します。 AESは対称的な暗号化アルゴリズムであり、強力なセキュリティを提供し、多くの場合、機密データを保護するために使用されます。rijndaelmanaged class
RijndaelManaged
<code class="language-csharp">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; } }</code>このコードは、
クラスを使用してAES暗号化と復号化を実装する方法を示しています。 セキュリティを強化するために、コードのをカスタムソルト値に置き換える必要があることに注意してください。 この例では、を使用して、共有キーと塩からAESキーを導き出します。 暗号化された結果は、ストレージと送信に便利なBase64文字列の形で返されます。 復号化プロセスが逆になり、base64文字列をバイト配列に変換してから復号化します。 この関数は、ストリームからIV(初期化ベクトル)を読み取るために使用されます。 潜在的な異常に対処することを忘れないでください。
以上がAESを使用してC#で文字列を暗号化および復号化する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。