前言:
今天朋友们对“c语言实现aes算法解密”大约比较注意,咱们都想要分析一些“c语言实现aes算法解密”的相关资讯。那么小编同时在网络上收集了一些对于“c语言实现aes算法解密””的相关内容,希望大家能喜欢,我们快快来了解一下吧!C# 中提供了多种加密解密算法和相关类库,可以用来保护数据的安全性。下面将简单介绍几种常用的加密解密算法,并给出相应的实例。
对称加密算法(Symmetric Encryption): 对称加密算法使用相同的密钥进行加密和解密,是最常见的加密算法之一。C# 中提供了 System.Security.Cryptography 命名空间,其中包含了一些常用的对称加密算法,如 AES、DES 和 TripleDES。
下面是一个使用 AES 算法进行对称加密和解密的示例:
using System;using System.Text;using System.Security.Cryptography;public class Program{ public static void Main() { string plainText = "Hello, World!"; // 待加密的明文 using (Aes aesAlg = Aes.Create()) { aesAlg.GenerateKey(); aesAlg.GenerateIV(); byte[] encryptedData = EncryptStringToBytes_Aes(plainText, aesAlg.Key, aesAlg.IV); string decryptedText = DecryptStringFromBytes_Aes(encryptedData, aesAlg.Key, aesAlg.IV); Console.WriteLine("Plaintext: " + plainText); Console.WriteLine("Encrypted data: " + Convert.ToBase64String(encryptedData)); Console.WriteLine("Decrypted text: " + decryptedText); } } static byte[] EncryptStringToBytes_Aes(string plainText, byte[] key, byte[] iv) { byte[] encrypted; using (Aes aesAlg = Aes.Create()) { aesAlg.Key = key; aesAlg.IV = iv; ICryptoTransform encryptor = aesAlg.CreateEncryptor(aesAlg.Key, aesAlg.IV); using (var msEncrypt = new System.IO.MemoryStream()) { using (var csEncrypt = new CryptoStream(msEncrypt, encryptor, CryptoStreamMode.Write)) { using (var swEncrypt = new System.IO.StreamWriter(csEncrypt)) { swEncrypt.Write(plainText); } encrypted = msEncrypt.ToArray(); } } } return encrypted; } static string DecryptStringFromBytes_Aes(byte[] cipherText, byte[] key, byte[] iv) { string plaintext = null; using (Aes aesAlg = Aes.Create()) { aesAlg.Key = key; aesAlg.IV = iv; ICryptoTransform decryptor = aesAlg.CreateDecryptor(aesAlg.Key, aesAlg.IV); using (var msDecrypt = new System.IO.MemoryStream(cipherText)) { using (var csDecrypt = new CryptoStream(msDecrypt, decryptor, CryptoStreamMode.Read)) { using (var srDecrypt = new System.IO.StreamReader(csDecrypt)) { plaintext = srDecrypt.ReadToEnd(); } } } } return plaintext; }}非对称加密算法(Asymmetric Encryption): 非对称加密算法使用一对密钥,即公钥和私钥,其中公钥用于加密数据,私钥用于解密数据。C# 中的 System.Security.Cryptography 命名空间中提供了 RSA 算法的实现。
下面是一个使用 RSA 算法进行非对称加密和解密的示例:
using System;using System.Text;using System.Security.Cryptography;public class Program{ public static void Main() { string plainText = "Hello, World!"; // 待加密的明文 using (RSA rsa = RSA.Create()) { byte[] encryptedData = EncryptStringToBytes_RSA(plainText, rsa.ExportRSAPublicKey()); string decryptedText = DecryptStringFromBytes_RSA(encryptedData, rsa.ExportRSAPrivateKey()); Console.WriteLine("Plaintext: " + plainText); Console.WriteLine("Encrypted data: " + Convert.ToBase64String(encryptedData)); Console.WriteLine("Decrypted text: " + decryptedText); } } static byte[] EncryptStringToBytes_RSA(string plainText, RSAParameters publicKey) { byte[] encrypted; using (RSA rsa = RSA.Create()) { rsa.ImportRSAPublicKey(publicKey, out _); encrypted = rsa.Encrypt(Encoding.UTF8.GetBytes(plainText), RSAEncryptionPadding.OaepSHA256); } return encrypted; } static string DecryptStringFromBytes_RSA(byte[] cipherText, RSAParameters privateKey) { string plaintext = null; using (RSA rsa = RSA.Create()) { rsa.ImportRSAPrivateKey(privateKey, out _); byte[] decryptedBytes = rsa.Decrypt(cipherText, RSAEncryptionPadding.OaepSHA256); plaintext = Encoding.UTF8.GetString(decryptedBytes); } return plaintext; }}散列算法(Hashing): 散列算法将任意长度的数据映射为固定长度的哈希值,不可逆且唯一。在 C# 中,System.Security.Cryptography 命名空间提供了多种散列算法的实现,如 MD5、SHA1、SHA256 等。
下面是一个使用 MD5 算法生成哈希值的示例:
using System;using System.Text;using System.Security.Cryptography;public class Program{ public static void Main() { string plainText = "Hello, World!"; // 待加密的明文 string hashValue = GetMD5Hash(plainText); Console.WriteLine("Plaintext: " + plainText); Console.WriteLine("Hash value: " + hashValue); } static string GetMD5Hash(string input) { using (MD5 md5Hash = MD5.Create()) { byte[] data = md5Hash.ComputeHash(Encoding.UTF8.GetBytes(input)); StringBuilder sBuilder = new StringBuilder(); for (int i = 0; i < data.Length; i++) { sBuilder.Append(data[i].ToString("x2")); } return sBuilder.ToString(); } }}
以上是 C# 中常用的加密解密算法的解释和示例,你可以根据自己的需求选择合适的算法来保护数据的安全性。
创作不易,如果您喜欢还请帮忙点赞关注,谢谢![作揖]
版权声明:
本站文章均来自互联网搜集,如有侵犯您的权益,请联系我们删除,谢谢。
标签: #c语言实现aes算法解密 #加密解密c语言