C# 中的 AES 加密
高級加密標準 (AES) 是一個強大且可靠的加密算法。它使用 128 位密鑰大小,提供卓越的安全性。在尋找 C# 中 AES 加密的清晰示例時,您可能會遇到以下常見問題:
問題:
我很難找到一個關於如何在 C# 中使用 AES 128 位加密的簡單示例。有人可以提供一個代碼示例嗎?
答案:
.NET 框架包含一個內置的 AES 實現,可以通過 RijndaelManaged
類訪問。此資源以及簡潔的代碼示例可在以下 Microsoft 文檔文章中找到:
[https://www.php.cn/link/194309a52da9de185b531cfc697cfca8 link is likely outdated and may not work. A more modern approach should be used.)
為方便起見,以下是一個代碼片段:
<code class="language-csharp">using System; using System.IO; using System.Security.Cryptography; public class AesEncryptionExample { public static void Main(string[] args) { try { string original = "这是一个需要加密的数据!"; // 使用更现代的 AesManaged 类 using (AesManaged aes = new AesManaged()) { aes.KeySize = 128; // 指定128位密钥 aes.GenerateKey(); aes.GenerateIV(); byte[] encrypted = EncryptStringToBytes(original, aes.Key, aes.IV); string roundtrip = DecryptStringFromBytes(encrypted, aes.Key, aes.IV); Console.WriteLine("原文:{0}", original); Console.WriteLine("解密后:{0}", roundtrip); } } catch (Exception e) { Console.WriteLine("错误:{0}", e.Message); } } static byte[] EncryptStringToBytes(string plainText, byte[] Key, byte[] IV) { // 使用更现代的 AesManaged 类进行加密 using (AesManaged aesAlg = new AesManaged()) { aesAlg.Key = Key; aesAlg.IV = IV; ICryptoTransform encryptor = aesAlg.CreateEncryptor(aesAlg.Key, aesAlg.IV); using (MemoryStream msEncrypt = new MemoryStream()) { using (CryptoStream csEncrypt = new CryptoStream(msEncrypt, encryptor, CryptoStreamMode.Write)) { using (StreamWriter swEncrypt = new StreamWriter(csEncrypt)) { swEncrypt.Write(plainText); } } return msEncrypt.ToArray(); } } } static string DecryptStringFromBytes(byte[] cipherText, byte[] Key, byte[] IV) { // 使用更现代的 AesManaged 类进行解密 using (AesManaged aesAlg = new AesManaged()) { aesAlg.Key = Key; aesAlg.IV = IV; ICryptoTransform decryptor = aesAlg.CreateDecryptor(aesAlg.Key, aesAlg.IV); using (MemoryStream msDecrypt = new MemoryStream(cipherText)) { using (CryptoStream csDecrypt = new CryptoStream(msDecrypt, decryptor, CryptoStreamMode.Read)) { using (StreamReader srDecrypt = new StreamReader(csDecrypt)) { return srDecrypt.ReadToEnd(); } } } } } }</code>
此代碼使用更現代的 AesManaged
類,並提供更清晰的錯誤處理。 請記住,在實際應用中,您應該使用更安全的密鑰管理方法,而不是像此示例中那樣直接在代碼中生成密鑰。
以上是如何使用一個簡單的示例在C#中實現AES 128位加密?的詳細內容。更多資訊請關注PHP中文網其他相關文章!