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中文网其他相关文章!