博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【ADO.NET基础】加密方法公共类
阅读量:4699 次
发布时间:2019-06-09

本文共 10174 字,大约阅读时间需要 33 分钟。

各种加密方法集锦:

using System;using System.Security.Cryptography;using System.Text;using System.IO;using System.Configuration;namespace Blog.Common{    ///     /// 通用加密/解密类。    ///     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";//自定义的密串        }        ///         /// 获得密钥        ///         /// 
密钥
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); } /// /// 获得初始向量IV /// ///
初试向量IV
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); } /// /// 加密方法(请先实例化Encrypt类) /// /// 待加密的串 ///
经过加密的串
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); } /// /// 解密方法(请先实例化Encrypt类) /// /// 待解密的串 ///
经过解密的串
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加密======== /// /// DES加密 /// /// 待加密的字符串 ///
加密后的字符串
public static string DESEncrypt(string Text) { return DESEncrypt(Text, "loveyajuan"); } /// /// DES加密数据 /// /// 待加密的字符串 /// 加密密钥 ///
加密后的字符串
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解密======== /// /// DES解密 /// /// 待解密的字符串 ///
解密后的明文
public static string DESDecrypt(string Text) { return DESDecrypt(Text, "loveyajuan"); } /// /// DES解密数据 /// /// 待解密的字符串 /// 解密密钥 ///
解密后的明文
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加密======== /// /// MD5加密 /// /// ///
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加密解密==== /// /// 倒序加1加密 /// /// ///
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; } /// /// 顺序减1解码 /// /// ///
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:处理全角字符还是有问题的*/ /// /// Escape加密 /// /// ///
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(); } /// /// UnEscape解密 /// /// ///
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编解码===== /// /// Base64编码 /// /// 编码类型 /// 待编码的字符串 ///
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; } /// /// Base64解码 /// /// 编码类型 /// 带解码的字符串 ///
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

你可能感兴趣的文章
SSH加固
查看>>
端口扫描base
查看>>
iOS IM开发的一些开源、框架和教程等资料
查看>>
FansUnion:共同写博客计划终究还是“流产”了
查看>>
python 二维字典
查看>>
pip 警告!The default format will switch to columns in the future
查看>>
Arrays类学习笔记
查看>>
实验吧之【天下武功唯快不破】
查看>>
2019-3-25多线程的同步与互斥(互斥锁、条件变量、读写锁、自旋锁、信号量)...
查看>>
win7-64 mysql的安装
查看>>
dcm4chee 修改默认(0002,0013) ImplementationVersionName
查看>>
maven3在eclipse3.4.2中创建java web项目
查看>>
发布时间 sql语句
查看>>
黑马程序员 ExecuteReader执行查询
查看>>
记一些从数学和程序设计中体会到的思想
查看>>
题目1462:两船载物问题
查看>>
POJ 2378 Tree Cutting(树形DP,水)
查看>>
第二冲刺阶段个人博客5
查看>>
UVA 116 Unidirectional TSP (白书dp)
查看>>
第三方测速工具
查看>>