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 加密静态方法/// </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 加密(数据加密标准,速度较快,适用于加密大量数据的场合)/// </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 解密(数据加密标准,速度较快,适用于加密大量数据的场合)/// </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 解密(数据加密标准,速度较快,适用于加密大量数据的场合)/// </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 加密(用变长密钥对大量数据进行加密)/// </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 解密(用变长密钥对大量数据进行加密)/// </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,对一块数据用三个不同的密钥进行三次加密,强度更高)/// </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,对一块数据用三个不同的密钥进行三次加密,强度更高)/// </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 加密(高级加密标准,是下一代的加密算法标准,速度快,安全级别高,目前 AES 标准的一个实现是 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 解密(高级加密标准,是下一代的加密算法标准,速度快,安全级别高,目前 AES 标准的一个实现是 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();*/}}
}

转载于:https://www.cnblogs.com/jeffrey77/archive/2012/10/16/2725973.html

C#各种加密算法的研究相关推荐

  1. 混沌序列 java,基于Logistic映射混沌加密算法的研究_韩凤英

    第7卷第1期长沙航空职业技术学院学报 Vo1.7No .1 2007年3月 CHANGS HA AERO NAUT I CAL VOCATI ONAL AND TECHN I CAL COLLEGE ...

  2. 计算机密码学思路,密码学中加密算法的研究和实现

    密码学是一门古老而深奥的学科,是研究计算机信息加密.解密及其变换的科学,是数学和计算机的交叉学科,也是一门新兴的学科[1].早在四千年前,古埃及人就开始使用密码来保密传递消息.两千多年前,罗马国王Ju ...

  3. 非对称加密算法之RSA介绍及OpenSSL中RSA常用函数使用举例

    RSA算法,在1977年由Ron Rivest.Adi Shamirh和LenAdleman,在美国的麻省理工学院开发完成.这个算法的名字,来源于三位开发者的名字.RSA已经成为公钥数据加密标准. R ...

  4. python能解密java的_实现Java加密,Python解密的RSA非对称加密算法功能

    摘要 因为最近业务需要使用到openssl的rsa非对称加密算法,研究了下它的使用方式,但是特殊在于前端分IOS和android两端,所以前端部门要求使用java给他们做一个加密工具包,但是因为服务端 ...

  5. java python rsa加密_实现Java加密,Python解密的RSA非对称加密算法功能

    摘要 因为最近业务需要使用到openssl的rsa非对称加密算法,研究了下它的使用方式,但是特殊在于前端分IOS和android两端,所以前端部门要求使用java给他们做一个加密工具包,但是因为服务端 ...

  6. 计算机密码学奖,上海交通大学计算机科学与工程系(CSE)

    2019年11月,中国密码学会举办2019年会,会上颁发了2019年中国密码学会优秀博士学位论文奖,计算机系2016届博士毕业生孙士锋的学位论文<抗密钥泄露/篡改攻击的非对称密码算法研究> ...

  7. 计算机加密技术图片,基于Henon映射的图像加密技术

    内容介绍 原文档由会员 第二波打卡 发布 基于Henon映射的图像加密技术 1.95万字 53页 包括外文翻译,原创作品,通过查重系统 摘 要 针对关于Henon映射的图像加密算法,现如今已有很多关于 ...

  8. 如何面对高水平的破解组织 谈暴力破解应对

    如何面对高水平的破解组织 谈暴力破解应对 2005-05-09, 11:18 sanit 共享软件是目前世界上软件业比较热门的话题,国内更是如此.成千上万的中国程序员以极大的热情投入到这个领域来,都憧 ...

  9. 25k~50k,比特大陆招人啦!这次会是你吗?

    每周日,区块链大本营人才快报,不见不散 本周新增招聘信息: 比特大陆 区块链测试工程师(25k-50k) 城市:北京 经验:5-10年 学历:本科 职位描述 1.正规高校计算机及相关专业本科以上学历: ...

最新文章

  1. [转]商业智能在电子商务交易中6大应用分析
  2. oracle 操作表
  3. 百度地图与HT for Web结合的GIS网络拓扑应用
  4. Leetcode12. 整数转罗马数字(C++)
  5. 思想:CoreMVC是什么(3)
  6. 解决Silverlight中DataGrid在显示数据时多一空白列
  7. 深度剖析 | 初学者应该如何学习前端?该怎么学?
  8. [2018.10.20 T2] 面包
  9. 微信支付-扫码支付方式在ThinkPHP商城中的使用(第一部分)
  10. 三分钟零代码实现CAD网页Web快速看图和高科技效果展示
  11. EditText 去掉下划线,但是不丢失光标
  12. Android Couldn‘t find meta-data for provider with authority
  13. 如何提高信息流广告的转化率?
  14. C# Microsoft.Office.Interop.Word设置Word页脚之添加当前页数
  15. Excel调用已有数据利用已经录入的项快速的生成下拉列表
  16. 用Python做兼职是如何挣钱的?
  17. Spring-boot-email邮件
  18. 第5章_数据库相关(一)
  19. 少年,我看你骨骼惊奇,必是练武奇才,将来维护宇宙正义
  20. VLC android 3.0解码器使用及移植TV项目调研

热门文章

  1. log--求自然对数
  2. 广义回归神经网络(GRNN)的数据预测
  3. R语言操作excel文件的数据
  4. 关于数学里的一些知识
  5. linux内核 header.s,Linux启动代码header.S研究
  6. RedHat(Linux) Oracle数据库设置开机自启动
  7. 移动端picker插件
  8. 'Push segues can only be used when the source controller is managed by an instance of UINavigationC
  9. 关于重装系统或还原系统
  10. Dokan虚拟磁盘开发实战