各种加密方法集锦:

using System;
using System.Security.Cryptography;
using System.Text;
using System.IO;
using System.Configuration;namespace Blog.Common
{/// <summary>/// 通用加密/解密类。/// </summary>public class Encrypt{#region ====对称加密(向量)=====//SymmetricAlgorithm 所有对称算法的实现都必须从中继承的抽象基类private SymmetricAlgorithm mobjCryptoService;private string key;public Encrypt(){mobjCryptoService = new RijndaelManaged();key = "Guz(%&hj7x89H$yuBI0456FtmaT5&fvHUFCy76*h%(HilJ$lhj!y6&(*jkP87jH7";//自定义的密串
        }/// <summary>/// 获得密钥/// </summary>/// <returns>密钥</returns>private byte[] GetLegalKey(){string sTemp = key;mobjCryptoService.GenerateKey();// 当在派生类中重写时,生成用于该算法的随机密钥byte[] bytTemp = mobjCryptoService.Key;int KeyLength = bytTemp.Length;if (sTemp.Length > KeyLength)sTemp = sTemp.Substring(0, KeyLength);else if (sTemp.Length < KeyLength)sTemp = sTemp.PadRight(KeyLength, ' ');return ASCIIEncoding.ASCII.GetBytes(sTemp);}/// <summary>/// 获得初始向量IV/// </summary>/// <returns>初试向量IV</returns>private byte[] GetLegalIV(){string sTemp = "E4ghj*Ghg7!rNIfb&95GUY86GfghUb#er57HBh(u%g6HJ($jhWk7&!hg4ui%$hjk";mobjCryptoService.GenerateIV();byte[] bytTemp = mobjCryptoService.IV;// 获取或设置对称算法的初始化向量int IVLength = bytTemp.Length;//获得一个 32 位整数,表示 System.Array 的所有维数中元素的总数if (sTemp.Length > IVLength)sTemp = sTemp.Substring(0, IVLength);else if (sTemp.Length < IVLength)sTemp = sTemp.PadRight(IVLength, ' ');return ASCIIEncoding.ASCII.GetBytes(sTemp);}/// <summary>/// 加密方法(请先实例化Encrypt类)/// </summary>/// <param name="Source">待加密的串</param>/// <returns>经过加密的串</returns>public string EncrypStrByIV(string Source){byte[] bytIn = UTF8Encoding.UTF8.GetBytes(Source);MemoryStream ms = new MemoryStream();mobjCryptoService.Key = GetLegalKey();mobjCryptoService.IV = GetLegalIV();ICryptoTransform encrypto = mobjCryptoService.CreateEncryptor();CryptoStream cs = new CryptoStream(ms, encrypto, CryptoStreamMode.Write);cs.Write(bytIn, 0, bytIn.Length);cs.FlushFinalBlock();ms.Close();byte[] bytOut = ms.ToArray();return Convert.ToBase64String(bytOut);}/// <summary>/// 解密方法(请先实例化Encrypt类)/// </summary>/// <param name="Source">待解密的串</param>/// <returns>经过解密的串</returns>public string DecrypStrByIV(string Source){byte[] bytIn = Convert.FromBase64String(Source);MemoryStream ms = new MemoryStream(bytIn, 0, bytIn.Length);mobjCryptoService.Key = GetLegalKey();mobjCryptoService.IV = GetLegalIV();ICryptoTransform encrypto = mobjCryptoService.CreateDecryptor();CryptoStream cs = new CryptoStream(ms, encrypto, CryptoStreamMode.Read);StreamReader sr = new StreamReader(cs);return sr.ReadToEnd();}#endregion#region ========DES加密========/// <summary>/// DES加密/// </summary>/// <param name="Text">待加密的字符串</param>/// <returns>加密后的字符串</returns>public static string DESEncrypt(string Text){return DESEncrypt(Text, "loveyajuan");}/// <summary> /// DES加密数据 /// </summary> /// <param name="Text">待加密的字符串</param> /// <param name="sKey">加密密钥</param> /// <returns>加密后的字符串</returns> public static string DESEncrypt(string Text, string sKey){DESCryptoServiceProvider des = new DESCryptoServiceProvider();byte[] inputByteArray;inputByteArray = Encoding.Default.GetBytes(Text);des.Key = ASCIIEncoding.ASCII.GetBytes(System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(sKey, "md5").Substring(0, 8));des.IV = ASCIIEncoding.ASCII.GetBytes(System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(sKey, "md5").Substring(0, 8));System.IO.MemoryStream ms = new System.IO.MemoryStream();CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write);cs.Write(inputByteArray, 0, inputByteArray.Length);cs.FlushFinalBlock();StringBuilder ret = new StringBuilder();foreach (byte b in ms.ToArray()){ret.AppendFormat("{0:X2}", b);}return ret.ToString();}#endregion#region ========DES解密========/// <summary>/// DES解密/// </summary>/// <param name="Text">待解密的字符串</param>/// <returns>解密后的明文</returns>public static string DESDecrypt(string Text){return DESDecrypt(Text, "loveyajuan");}/// <summary> /// DES解密数据 /// </summary> /// <param name="Text">待解密的字符串</param> /// <param name="sKey">解密密钥</param> /// <returns>解密后的明文</returns> public static string DESDecrypt(string Text, string sKey){DESCryptoServiceProvider des = new DESCryptoServiceProvider();int len;len = Text.Length / 2;byte[] inputByteArray = new byte[len];int x, i;for (x = 0; x < len; x++){i = Convert.ToInt32(Text.Substring(x * 2, 2), 16);inputByteArray[x] = (byte)i;}des.Key = ASCIIEncoding.ASCII.GetBytes(System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(sKey, "md5").Substring(0, 8));des.IV = ASCIIEncoding.ASCII.GetBytes(System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(sKey, "md5").Substring(0, 8));System.IO.MemoryStream ms = new System.IO.MemoryStream();CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write);cs.Write(inputByteArray, 0, inputByteArray.Length);cs.FlushFinalBlock();return Encoding.Default.GetString(ms.ToArray());}#endregion#region ========MD5加密========/// <summary>/// MD5加密/// </summary>/// <param name="paramstr"></param>/// <returns></returns>public static string MD5Encrypt(string paramstr){string privateKey = "loveyajuan";string tempStr = System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(privateKey, "MD5");return System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(paramstr + tempStr, "MD5").ToLower();}#endregion#region ====倒序加1加密解密====/// <summary>/// 倒序加1加密/// </summary>/// <param name="rs"></param>/// <returns></returns>public static string EncryptOrderStr(string rs) //倒序加1加密
        {byte[] by = new byte[rs.Length];for (int i = 0; i <= rs.Length - 1; i++){by[i] = (byte)((byte)rs[i] + 1);}rs = "";for (int i = by.Length - 1; i >= 0; i--){rs += ((char)by[i]).ToString();}return rs;}/// <summary>/// 顺序减1解码 /// </summary>/// <param name="rs"></param>/// <returns></returns>public static string DecryptOrderStr(string rs) //顺序减1解码
        {byte[] by = new byte[rs.Length];for (int i = 0; i <= rs.Length - 1; i++){by[i] = (byte)((byte)rs[i] - 1);}rs = "";for (int i = by.Length - 1; i >= 0; i--){rs += ((char)by[i]).ToString();}return rs;}#endregion#region =====Escape加密解密====/*statement:处理全角字符还是有问题的*//// <summary>/// Escape加密/// </summary>/// <param name="str"></param>/// <returns></returns>public static string Escape(string str){if (str == null){return String.Empty;}StringBuilder sb = new StringBuilder();int len = str.Length;for (int i = 0; i < len; i++){char c = str[i];if (Char.IsLetterOrDigit(c) || c == '-' || c == '_' || c == '/' || c == '\\' || c == '.'){sb.Append(c);}else{sb.Append(Uri.HexEscape(c));}}return sb.ToString();}/// <summary>/// UnEscape解密/// </summary>/// <param name="str"></param>/// <returns></returns>public static string UnEscape(string str){if (str == null){return String.Empty;}StringBuilder sb = new StringBuilder();int len = str.Length;int i = 0;while (i != len){if (Uri.IsHexEncoding(str, i)){sb.Append(Uri.HexUnescape(str, ref i));}else{sb.Append(str[i++]);}}return sb.ToString();}#endregion#region ======Base64编解码=====/// <summary>/// Base64编码/// </summary>/// <param name="code_type">编码类型</param>/// <param name="code">待编码的字符串</param>/// <returns></returns>public static string Base64Encode(string code_type, string code){string encode = "";byte[] bytes = Encoding.GetEncoding(code_type).GetBytes(code);try{encode = Convert.ToBase64String(bytes);}catch{encode = code;}return encode;}/// <summary>/// Base64解码/// </summary>/// <param name="code_type">编码类型</param>/// <param name="code">带解码的字符串</param>/// <returns></returns>public static string Base64Decode(string code_type, string code){string decode = "";byte[] bytes = Convert.FromBase64String(code);try{decode = Encoding.GetEncoding(code_type).GetString(bytes);}catch{decode = code;}return decode;}#endregion}
}

转载于:https://www.cnblogs.com/888888CN/p/7136570.html

【ADO.NET基础】加密方法公共类相关推荐

  1. Java基础:方法和类详解

    示例代码: 向方法传递对象: class Block{                            //类Block int a,b,c;                          ...

  2. APK加密方法:某社交类Android APP加密分享

    这款社交类APK是无数宅男宅女的挚爱,但是听说他们对这款app进行了非常严密的保护,防止用户进行二次打包.现在我们就来分析下这款app的安全性到底如何! 工具/原料 APK源码安全检测平台 APK源码 ...

  3. C#连接达梦数据库基础功公共类

    c#程序访问达梦数据库 1.准备数据库驱动 达梦数据库安装完成后路径一般为:C:\dmdbms 找到  C:\dmdbms\drivers\dotNet\DmProvider: 我选择为.net 4. ...

  4. 27、Python 面向对象(创建类、创建实例对象、访问属性、内置类属性、对象销毁、类的继承、方法重写、基础重载方法、运算符重载、类属性与方法、下划线双下划线)

    27Python面向对象(Python2) Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对象是很容易的.本章节我们将详细介绍Python的面向对象编程. ...

  5. php中des加密cbc模式,php中加密解密DES类的简单使用方法示例

    本文实例讲述了php中加密解密DES类的简单使用方法.分享给大家供大家参考,具体如下: 在平时的开发工作中,我们经常会对关键字符进行加密,可能为了安全 也可能为了规范,所以要正确使用DES加密解密 代 ...

  6. Python基础笔记_Day12_Python元类、type动态创建类、Python动态创建方法、Python运算符、Python发邮件、短信

    Day12_Python元类.type动态创建类.Python动态创建方法.Python运算符重载.Python发邮件.短信 12.01_Python语言基础(类对象)(熟悉) 12.02_Pytho ...

  7. 【贪玩巴斯】Unity初学圣经Part2-C#基础——Day 01:C#基础之——命名空间、类、方法、变量的声明赋值和相关知识以及.NETC#关系讲解 2022年3月28日

    C#基础之--命名空间.类.方法.变量的声明赋值和相关知识以及.NETC#关系讲解 对应视频4-1至4-7 1.引入命名空间: 2.引入类.方法 3.变量的声明赋值 4.综合小练习 5. .NET的介 ...

  8. 面向对象编程(基础)5:类的成员之二:方法(method)

    目录 5.1 方法的引入 5.2 方法(method.函数)的理解 举例1: 举例2: 5.3 如何声明方法 1.声明方法的语法格式 (1)一个完整的方法 = 方法头 + 方法体. (2)方法头可能包 ...

  9. ADO.NET复习——自己编写SqlHelper类

    今天复习了一次ADO.NET基础,整理一下自己的认为的重点: 编写SqlHelper类,方便我们执行数据库语句,这时可以直接调用封装在SqlHelper类的方法.现在大多数公司面试的时候,给你的面试题 ...

最新文章

  1. 控制客户端对同一个服务端地址的连接端口数量
  2. 如何将Mac OS X10.9下的Python2.7升级到最新的Python3.3
  3. OpenCV meanshift目标追踪
  4. 达拉草201771010105《面向对象程序设计(java)》第十六周学习总结
  5. nexus搭建和迁移
  6. jquery live hover绑定方法
  7. 面试稳了!网易资深工程师揭秘运维面经!
  8. 共线方程(百度百科)
  9. idea社区版使用maven运行web项目
  10. 一道和逆向和溢出有关的竞赛题分析
  11. 0/1背包——动态规划
  12. 傅里叶光学随机散斑原理 matlab仿真实现随机散斑
  13. nonebot2+cqhttp 防闪照与防撤回插件
  14. java访问数据库视图_java 访问数据库视图
  15. tracker服务器架构分析
  16. 关于Data Matrix 基于ECC200标准的编码原理和相关开源代码
  17. 常用邮箱服务器地址、端口(POP3/SMTP)
  18. 阿里云天池大赛赛题(深度学习)——视频增强(完整代码)
  19. 天野商业脚本开发第三期培训
  20. 诺维信任命陈晓慧女士为中国区新总裁

热门文章

  1. 联发科MT8377 MT8389 MT6589 MT6577等芯片详细解析
  2. SQL Prompt 插件
  3. 计算机英语小短文单词易懂,求计算机英语短文译文。。。。急急急!悬赏10
  4. c语言 自动化办公,办公自动化快捷键大全
  5. php mosquitto,mosquitto 扩展安装php客户端库-Go语言中文社区
  6. 怎么查看电脑有没有python_使用python获取电脑的磁盘信息方法
  7. 测试面试题集-生活物品测试:杯子、伞、钢笔、桌子
  8. Google:2-1 tfkeras简介
  9. Ribbon Finance将WBTC Theta Vault存款上限提高至250WBTC
  10. 两种专家经验评分卡的学习