日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > C# >内容正文

C#

C#各种加密算法的研究

發(fā)布時(shí)間:2025/4/5 C# 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C#各种加密算法的研究 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Security.Cryptography; using System.IO;namespace test_CryptoGraphy {class Program{/// <summary>/// MD5 加密靜態(tài)方法/// </summary>/// <param name="EncryptString">待加密的明文</param>/// <returns>加密后的密文</returns>public static string MD5Encrypt(string EncryptString){if (string.IsNullOrEmpty(EncryptString)){throw(new Exception("明文不得為空!"));}MD5 m_ClassMD5 = new MD5CryptoServiceProvider();string m_strEncrypt = "";try{m_strEncrypt = BitConverter.ToString(m_ClassMD5.ComputeHash(Encoding.Default.GetBytes(EncryptString))).Replace("-","");}catch (ArgumentException ex){throw ex;}catch (CryptographicException ex){throw ex;}catch (Exception ex){throw ex;}finally{m_ClassMD5.Clear();}return m_strEncrypt;}/// <summary>/// DES 加密(數(shù)據(jù)加密標(biāo)準(zhǔn),速度較快,適用于加密大量數(shù)據(jù)的場(chǎng)合)/// </summary>/// <param name="EncryptString">待加密的明文</param>/// <param name="EncryptKey">加密的密鑰</param>/// <returns>加密后的密文</returns>public static string DESEncrypt(string EncryptString, string EncryptKey){if (string.IsNullOrEmpty(EncryptString)){throw (new Exception("明文不得為空!"));}if (string.IsNullOrEmpty(EncryptKey)){throw (new Exception("密鑰不得為空!"));}if (EncryptKey.Length != 8){throw new Exception("密鑰必須為8位");}byte[] m_btIV = {0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF };string m_strEncrypt = "";DESCryptoServiceProvider m_DESProvider = new DESCryptoServiceProvider();try{byte[] m_btEncryptString = Encoding.Default.GetBytes(EncryptString);MemoryStream m_stream = new MemoryStream();CryptoStream m_cstream = new CryptoStream(m_stream, m_DESProvider.CreateEncryptor(Encoding.Default.GetBytes(EncryptKey),m_btIV),CryptoStreamMode.Write);m_cstream.Write(m_btEncryptString, 0, m_btEncryptString.Length);m_cstream.FlushFinalBlock();m_strEncrypt = Convert.ToBase64String(m_stream.ToArray());m_stream.Close();m_stream.Dispose();m_cstream.Close();m_cstream.Dispose();}catch (IOException ex){throw ex;}catch (ArgumentException ex){throw ex;}catch (CryptographicException ex){throw ex;}catch (Exception ex){throw ex;}finally{m_DESProvider.Clear();}return m_strEncrypt;}/// <summary>/// DES 解密(數(shù)據(jù)加密標(biāo)準(zhǔn),速度較快,適用于加密大量數(shù)據(jù)的場(chǎng)合)/// </summary>/// <param name="DecryptString">待解密的密文</param>/// <param name="DecryptKey">解密的密鑰</param>/// <returns>解密后的明文</returns>public static string DESDecrypt(string DecryptString, string DecryptKey){if (string.IsNullOrEmpty(DecryptString)){throw (new Exception("密文不得為空!"));}if (string.IsNullOrEmpty(DecryptKey)){throw (new Exception("密鑰不得為空!"));}if (DecryptKey.Length != 8){throw new Exception("密鑰必須為8位");}byte[] m_btIV = { 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF };string m_strDecrypt = "";DESCryptoServiceProvider m_DESProvider = new DESCryptoServiceProvider();try{byte[] m_btDecryptString = Convert.FromBase64String(DecryptString);MemoryStream m_stream = new MemoryStream();CryptoStream m_cstream = new CryptoStream(m_stream, m_DESProvider.CreateDecryptor(Encoding.Default.GetBytes(DecryptKey), m_btIV), CryptoStreamMode.Write);m_cstream.Write(m_btDecryptString, 0, m_btDecryptString.Length);m_cstream.FlushFinalBlock();m_strDecrypt = Encoding.Default.GetString(m_stream.ToArray());m_stream.Close();m_stream.Dispose();m_cstream.Close();m_cstream.Dispose();}catch (IOException ex){throw ex;}catch (ArgumentException ex){throw ex;}catch (CryptographicException ex){throw ex;}catch (Exception ex){throw ex;}finally{m_DESProvider.Clear();}return m_strDecrypt;}/* /// <summary>/// DES 解密(數(shù)據(jù)加密標(biāo)準(zhǔn),速度較快,適用于加密大量數(shù)據(jù)的場(chǎng)合)/// </summary>/// <param name="DecryptString">待解密的密文</param>/// <param name="DecryptKey">解密的密鑰</param>/// <returns>returns</returns>public static string DESDecrypt(string DecryptString, string DecryptKey){if (string.IsNullOrEmpty(DecryptString)) { throw (new Exception("密文不得為空")); }if (string.IsNullOrEmpty(DecryptKey)) { throw (new Exception("密鑰不得為空")); }if (DecryptKey.Length != 8) { throw (new Exception("密鑰必須為8位")); }byte[] m_btIV = { 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF };string m_strDecrypt = "";DESCryptoServiceProvider m_DESProvider = new DESCryptoServiceProvider();try{byte[] m_btDecryptString = Convert.FromBase64String(DecryptString);MemoryStream m_stream = new MemoryStream();CryptoStream m_cstream = new CryptoStream(m_stream, m_DESProvider.CreateDecryptor(Encoding.Default.GetBytes(DecryptKey), m_btIV), CryptoStreamMode.Write);m_cstream.Write(m_btDecryptString, 0, m_btDecryptString.Length);m_cstream.FlushFinalBlock();m_strDecrypt = Encoding.Default.GetString(m_stream.ToArray());m_stream.Close(); m_stream.Dispose();m_cstream.Close(); m_cstream.Dispose();}catch (IOException ex) { throw ex; }catch (CryptographicException ex) { throw ex; }catch (ArgumentException ex) { throw ex; }catch (Exception ex) { throw ex; }finally { m_DESProvider.Clear(); }return m_strDecrypt;}*//// <summary>/// RC2 加密(用變長(zhǎng)密鑰對(duì)大量數(shù)據(jù)進(jìn)行加密)/// </summary>/// <param name="EncryptString">待加密密文</param>/// <param name="EncryptKey">加密密鑰</param>/// <returns>returns</returns>public static string RC2Encrypt(string EncryptString, string EncryptKey){if (string.IsNullOrEmpty(EncryptString)) { throw (new Exception("密文不得為空")); }if (string.IsNullOrEmpty(EncryptKey)) { throw (new Exception("密鑰不得為空")); }if (EncryptKey.Length < 5 || EncryptKey.Length > 16) { throw (new Exception("密鑰必須為5-16位")); }string m_strEncrypt = "";byte[] m_btIV = { 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF };RC2CryptoServiceProvider m_RC2Provider = new RC2CryptoServiceProvider();try{byte[] m_btEncryptString = Encoding.Default.GetBytes(EncryptString);MemoryStream m_stream = new MemoryStream();CryptoStream m_cstream = new CryptoStream(m_stream, m_RC2Provider.CreateEncryptor(Encoding.Default.GetBytes(EncryptKey), m_btIV), CryptoStreamMode.Write);m_cstream.Write(m_btEncryptString, 0, m_btEncryptString.Length);m_cstream.FlushFinalBlock();m_strEncrypt = Convert.ToBase64String(m_stream.ToArray());m_stream.Close(); m_stream.Dispose();m_cstream.Close(); m_cstream.Dispose();}catch (IOException ex) { throw ex; }catch (CryptographicException ex) { throw ex; }catch (ArgumentException ex) { throw ex; }catch (Exception ex) { throw ex; }finally { m_RC2Provider.Clear(); }return m_strEncrypt;}/// <summary>/// RC2 解密(用變長(zhǎng)密鑰對(duì)大量數(shù)據(jù)進(jìn)行加密)/// </summary>/// <param name="DecryptString">待解密密文</param>/// <param name="DecryptKey">解密密鑰</param>/// <returns>returns</returns>public static string RC2Decrypt(string DecryptString, string DecryptKey){if (string.IsNullOrEmpty(DecryptString)) { throw (new Exception("密文不得為空")); }if (string.IsNullOrEmpty(DecryptKey)) { throw (new Exception("密鑰不得為空")); }if (DecryptKey.Length < 5 || DecryptKey.Length > 16) { throw (new Exception("密鑰必須為5-16位")); }byte[] m_btIV = { 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF };string m_strDecrypt = "";RC2CryptoServiceProvider m_RC2Provider = new RC2CryptoServiceProvider();try{byte[] m_btDecryptString = Convert.FromBase64String(DecryptString);MemoryStream m_stream = new MemoryStream();CryptoStream m_cstream = new CryptoStream(m_stream, m_RC2Provider.CreateDecryptor(Encoding.Default.GetBytes(DecryptKey), m_btIV), CryptoStreamMode.Write);m_cstream.Write(m_btDecryptString, 0, m_btDecryptString.Length);m_cstream.FlushFinalBlock();m_strDecrypt = Encoding.Default.GetString(m_stream.ToArray());m_stream.Close(); m_stream.Dispose();m_cstream.Close(); m_cstream.Dispose();}catch (IOException ex) { throw ex; }catch (CryptographicException ex) { throw ex; }catch (ArgumentException ex) { throw ex; }catch (Exception ex) { throw ex; }finally { m_RC2Provider.Clear(); }return m_strDecrypt;}/// <summary>/// 3DES 加密(基于DES,對(duì)一塊數(shù)據(jù)用三個(gè)不同的密鑰進(jìn)行三次加密,強(qiáng)度更高)/// </summary>/// <param name="EncryptString">待加密密文</param>/// <param name="EncryptKey1">密鑰一</param>/// <param name="EncryptKey2">密鑰二</param>/// <param name="EncryptKey3">密鑰三</param>/// <returns>returns</returns>public static string DES3Encrypt(string EncryptString, string EncryptKey1, string EncryptKey2, string EncryptKey3){string m_strEncrypt = "";try{m_strEncrypt = DESEncrypt(EncryptString, EncryptKey3);m_strEncrypt = DESEncrypt(m_strEncrypt, EncryptKey2);m_strEncrypt = DESEncrypt(m_strEncrypt, EncryptKey1);}catch (Exception ex) { throw ex; }return m_strEncrypt;}/// <summary>/// 3DES 解密(基于DES,對(duì)一塊數(shù)據(jù)用三個(gè)不同的密鑰進(jìn)行三次加密,強(qiáng)度更高)/// </summary>/// <param name="DecryptString">待解密密文</param>/// <param name="DecryptKey1">密鑰一</param>/// <param name="DecryptKey2">密鑰二</param>/// <param name="DecryptKey3">密鑰三</param>/// <returns>returns</returns>public static string DES3Decrypt(string DecryptString, string DecryptKey1, string DecryptKey2, string DecryptKey3){string m_strDecrypt = "";try{m_strDecrypt = DESDecrypt(DecryptString, DecryptKey1);m_strDecrypt = DESDecrypt(m_strDecrypt, DecryptKey2);m_strDecrypt = DESDecrypt(m_strDecrypt, DecryptKey3);}catch (Exception ex) { throw ex; }return m_strDecrypt;}/// <summary>/// AES 加密(高級(jí)加密標(biāo)準(zhǔn),是下一代的加密算法標(biāo)準(zhǔn),速度快,安全級(jí)別高,目前 AES 標(biāo)準(zhǔn)的一個(gè)實(shí)現(xiàn)是 Rijndael 算法)/// </summary>/// <param name="EncryptString">待加密密文</param>/// <param name="EncryptKey">加密密鑰</param>/// <returns></returns>public static string AESEncrypt(string EncryptString, string EncryptKey){if (string.IsNullOrEmpty(EncryptString)) { throw (new Exception("密文不得為空")); }if (string.IsNullOrEmpty(EncryptKey)) { throw (new Exception("密鑰不得為空")); }string m_strEncrypt = "";byte[] m_btIV = Convert.FromBase64String("Rkb4jvUy/ye7Cd7k89QQgQ==");Rijndael m_AESProvider = Rijndael.Create();try{byte[] m_btEncryptString = Encoding.Default.GetBytes(EncryptString);MemoryStream m_stream = new MemoryStream();CryptoStream m_csstream = new CryptoStream(m_stream, m_AESProvider.CreateEncryptor(Encoding.Default.GetBytes(EncryptKey), m_btIV), CryptoStreamMode.Write);m_csstream.Write(m_btEncryptString, 0, m_btEncryptString.Length); m_csstream.FlushFinalBlock();m_strEncrypt = Convert.ToBase64String(m_stream.ToArray());m_stream.Close(); m_stream.Dispose();m_csstream.Close(); m_csstream.Dispose();}catch (IOException ex) { throw ex; }catch (CryptographicException ex) { throw ex; }catch (ArgumentException ex) { throw ex; }catch (Exception ex) { throw ex; }finally { m_AESProvider.Clear(); }return m_strEncrypt;}/// <summary>/// AES 解密(高級(jí)加密標(biāo)準(zhǔn),是下一代的加密算法標(biāo)準(zhǔn),速度快,安全級(jí)別高,目前 AES 標(biāo)準(zhǔn)的一個(gè)實(shí)現(xiàn)是 Rijndael 算法)/// </summary>/// <param name="DecryptString">待解密密文</param>/// <param name="DecryptKey">解密密鑰</param>/// <returns></returns>public static string AESDecrypt(string DecryptString, string DecryptKey){if (string.IsNullOrEmpty(DecryptString)) { throw (new Exception("密文不得為空")); }if (string.IsNullOrEmpty(DecryptKey)) { throw (new Exception("密鑰不得為空")); }string m_strDecrypt = "";byte[] m_btIV = Convert.FromBase64String("Rkb4jvUy/ye7Cd7k89QQgQ==");Rijndael m_AESProvider = Rijndael.Create();try{byte[] m_btDecryptString = Convert.FromBase64String(DecryptString);MemoryStream m_stream = new MemoryStream();CryptoStream m_csstream = new CryptoStream(m_stream, m_AESProvider.CreateDecryptor(Encoding.Default.GetBytes(DecryptKey), m_btIV), CryptoStreamMode.Write);m_csstream.Write(m_btDecryptString, 0, m_btDecryptString.Length); m_csstream.FlushFinalBlock();m_strDecrypt = Encoding.Default.GetString(m_stream.ToArray());m_stream.Close(); m_stream.Dispose();m_csstream.Close(); m_csstream.Dispose();}catch (IOException ex) { throw ex; }catch (CryptographicException ex) { throw ex; }catch (ArgumentException ex) { throw ex; }catch (Exception ex) { throw ex; }finally { m_AESProvider.Clear(); }return m_strDecrypt;}static void Main(string[] args){/*Console.WriteLine(MD5Encrypt("test"));//Console.WriteLine(MD5Decrypt(MD5Encrypt("test")));*/string str = DESEncrypt("test", "helloklk");Console.WriteLine(str);Console.WriteLine(str.Length);Console.WriteLine(DESEncrypt("test", "hellokkk").Length);Console.WriteLine(DESDecrypt(str, "helloklk"));Console.ReadLine();/* HashAlgorithm hash = HashAlgorithm.Create();Console.Write("Hash size:");Console.Write(hash.HashSize.ToString() + "bits");Console.WriteLine();byte[] data = { 200, 34, 12, 14, 210, 199, 172, 77, 88, 99 };byte[] hashBytes = hash.ComputeHash(data);Console.Write("Hash:" + BitConverter.ToString(hashBytes));Console.Read();*/}} }

轉(zhuǎn)載于:https://www.cnblogs.com/jeffrey77/archive/2012/10/16/2725973.html

總結(jié)

以上是生活随笔為你收集整理的C#各种加密算法的研究的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。