龙空技术网

C# 加密解密浅析

步伐科技 457

前言:

今天朋友们对“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语言