- 浏览: 581463 次
- 性别:
- 来自: 济南
文章分类
最新评论
-
18813188509:
请教,怎么在标题或者表头的前面显示导出报表的时间、数据数量…… ...
JeeSite的Excel导入、导出、支持大数据量,使用annotation最小化配置 -
u010199866:
2018-06-07 15:42:44 [com.cj ...
实现MyBatis Mapper XML文件增量动态刷新,自动加载,热加载,热部署 -
ccav1024:
大神好,下了您的代码,项目启动访问后,系统设置--机构用户-- ...
JeeSite 4.0 规划(二) -
juxiaojun114:
jeesite 使用idea导入开发,启动tomcat后为啥看 ...
实现MyBatis Mapper XML文件增量动态刷新,自动加载,热加载,热部署 -
aaddsfdsfsdfs:
真心给个赞,可以的,忒提高开发效率了,配合自己写的通用后台框架 ...
实现MyBatis Mapper XML文件增量动态刷新,自动加载,热加载,热部署
这是我写CMIS时用到的一个加密类。
using System; using System.Security.Cryptography; using System.IO; using System.Data; using System.Web; using System.Text; using System.Security; namespace CMIS.Common { /// <summary> /// 加密解密 /// </summary> public class Encrypt { #region DES密钥 /// <summary> /// DES密钥 /// </summary> public static byte[] DESKey = new byte[] {0x52, 0xBC, 0xA1, 0x6A, 0xD5, 0x87, 0x3B, 0xE6, 0x82, 0x7A, 0x2A, 0x64, 0x3A, 0x7F, 0x32, 0xBB, 0x1B, 0x67, 0xE2, 0x5E, 0x06, 0x19, 0xB9, 0x2D, 0x68, 0xB3, 0x4F, 0xFB, 0xBF, 0xDD, 0x55 ,0xB8 }; #endregion #region DES加密解密 /// <summary> /// DES加密 /// </summary> /// <param name="strSource">待加密字串</param> /// <param name="key">32位Key值</param> /// <returns>加密后的字符串</returns> public static string DESEncrypt(string strSource) { return DESEncrypt(strSource, DESKey); } public static string DESEncrypt(string strSource,byte[] key) { SymmetricAlgorithm sa = Rijndael.Create(); sa.Key = key; sa.Mode= CipherMode.ECB; sa.Padding = PaddingMode.Zeros; MemoryStream ms = new MemoryStream(); CryptoStream cs = new CryptoStream(ms, sa.CreateEncryptor(), CryptoStreamMode.Write); byte[] byt = Encoding.Unicode.GetBytes(strSource); cs.Write(byt, 0, byt.Length); cs.FlushFinalBlock(); cs.Close(); return Convert.ToBase64String(ms.ToArray()); } /// <summary> /// DES解密 /// </summary> /// <param name="strSource">待解密的字串</param> /// <param name="key">32位Key值</param> /// <returns>解密后的字符串</returns> public static string DESDecrypt(string strSource) { return DESDecrypt(strSource, DESKey); } public static string DESDecrypt(string strSource,byte[] key) { SymmetricAlgorithm sa = Rijndael.Create(); sa.Key = key; sa.Mode = CipherMode.ECB; sa.Padding = PaddingMode.Zeros; ICryptoTransform ct = sa.CreateDecryptor(); byte[] byt = Convert.FromBase64String(strSource); MemoryStream ms = new MemoryStream(byt); CryptoStream cs = new CryptoStream(ms, ct, CryptoStreamMode.Read); StreamReader sr = new StreamReader(cs, Encoding.Unicode); return sr.ReadToEnd(); } #endregion #region 一个用hash实现的加密解密方法 /// <summary> /// 加密 /// </summary> /// <param name="src"></param> /// <returns></returns> public static string EncryptStrByHash(string src) { if (src.Length==0) { return ""; } byte[] HaKey=System.Text.Encoding.ASCII.GetBytes((src+"Test").ToCharArray()); byte[] HaData=new byte[20]; HMACSHA1 Hmac=new HMACSHA1(HaKey); CryptoStream cs=new CryptoStream(Stream.Null,Hmac,CryptoStreamMode.Write); try { cs.Write(HaData,0,HaData.Length); } finally { cs.Close(); } string HaResult = System.Convert.ToBase64String(Hmac.Hash).Substring(0,16); byte[] RiKey = System.Text.Encoding.ASCII.GetBytes(HaResult.ToCharArray()); byte[] RiDataBuf = System.Text.Encoding.ASCII.GetBytes(src.ToCharArray()); byte[] EncodedBytes = {}; MemoryStream ms = new MemoryStream(); RijndaelManaged rv = new RijndaelManaged(); cs = new CryptoStream(ms, rv.CreateEncryptor(RiKey, RiKey), CryptoStreamMode.Write); try { cs.Write(RiDataBuf, 0, RiDataBuf.Length); cs.FlushFinalBlock(); EncodedBytes = ms.ToArray(); } finally { ms.Close(); cs.Close(); } return HaResult+System.Convert.ToBase64String(EncodedBytes); } /// <summary> /// 解密 /// </summary> /// <param name="src"></param> /// <returns></returns> public static string DecrypStrByHash(string src) { if (src.Length<40) return ""; byte[] SrcBytes = System.Convert.FromBase64String(src.Substring(16)); byte[] RiKey = System.Text.Encoding.ASCII.GetBytes(src.Substring(0,16).ToCharArray()); byte[] InitialText = new byte[SrcBytes.Length]; RijndaelManaged rv = new RijndaelManaged(); MemoryStream ms = new MemoryStream(SrcBytes); CryptoStream cs = new CryptoStream(ms, rv.CreateDecryptor(RiKey, RiKey), CryptoStreamMode.Read); try { cs.Read(InitialText, 0, InitialText.Length); } finally { ms.Close(); cs.Close(); } System.Text.StringBuilder Result = new System.Text.StringBuilder(); for(int i=0; i < InitialText.Length; ++i) if (InitialText[i]>0) Result.Append((char) InitialText[i]); return Result.ToString(); } /// <summary> /// 对加密后的密文重新编码,如果密文长>16,则去掉前16个字符,如果长度小于16,返回空字符串 /// </summary> /// <param name="s"></param> /// <returns></returns> public static string ReEncryptStrByHash(string s) { //string e= (new Encrypt()).EncryptStrByHash(s); string e= EncryptStrByHash(s); return ((e.Length>16)?e.Substring(16):""); } #endregion #region Md5加密,生成16位或32位,生成的密文都是大写 /// <summary> /// MD5 16位加密 /// </summary> /// <param name="str"></param> /// <returns></returns> public static string Md5To16(string str) { MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider(); string pwd = BitConverter.ToString(md5.ComputeHash(UTF8Encoding.Default.GetBytes(str)), 4, 8); pwd = pwd.Replace("-", ""); return pwd; } /// <summary> /// MD5 32位加密 /// </summary> /// <param name="str"></param> /// <returns></returns> public static string Md5To32(string str) { string pwd = ""; MD5 md5 = MD5.Create(); byte[] s = md5.ComputeHash(Encoding.UTF8.GetBytes(str)); for (int i = 0; i < s.Length; i++){ pwd = pwd + s[i].ToString("X2"); } return pwd; } #endregion #region 3DES加密解密 /// <summary> /// 3DES加密 /// </summary> /// <param name="str"></param> /// <returns></returns> public static string Encrypt3DES(string str) { //密钥 string sKey = "wyw308"; // //矢量,可为空 string sIV = "scf521"; // //构造对称算法 SymmetricAlgorithm mCSP = new TripleDESCryptoServiceProvider(); ICryptoTransform ct; MemoryStream ms; CryptoStream cs; byte[] byt; mCSP.Key = Convert.FromBase64String(sKey); mCSP.IV = Convert.FromBase64String(sIV); mCSP.Mode = System.Security.Cryptography.CipherMode.ECB; mCSP.Padding = System.Security.Cryptography.PaddingMode.PKCS7; ct = mCSP.CreateEncryptor(mCSP.Key, mCSP.IV); byt = Encoding.UTF8.GetBytes(str); ms = new MemoryStream(); cs = new CryptoStream(ms, ct, CryptoStreamMode.Write); cs.Write(byt, 0, byt.Length); cs.FlushFinalBlock(); cs.Close(); return Convert.ToBase64String(ms.ToArray()); } /// <summary> /// 带指定密钥和矢量的3DES加密 /// </summary> /// <param name="str"></param> /// <param name="sKey"></param> /// <param name="sIV"></param> /// <returns></returns> public static string Encrypt3DES(string str,string sKey,string sIV) { SymmetricAlgorithm mCSP = new TripleDESCryptoServiceProvider(); ICryptoTransform ct; MemoryStream ms; CryptoStream cs; byte[] byt; mCSP.Key = Convert.FromBase64String(sKey); mCSP.IV = Convert.FromBase64String(sIV); mCSP.Mode = System.Security.Cryptography.CipherMode.ECB; mCSP.Padding = System.Security.Cryptography.PaddingMode.PKCS7; ct = mCSP.CreateEncryptor(mCSP.Key, mCSP.IV); byt = Encoding.UTF8.GetBytes(str); ms = new MemoryStream(); cs = new CryptoStream(ms, ct, CryptoStreamMode.Write); cs.Write(byt, 0, byt.Length); cs.FlushFinalBlock(); cs.Close(); return Convert.ToBase64String(ms.ToArray()); } /// <summary> /// 3DES解密 /// </summary> /// <param name="Value"></param> /// <returns></returns> public static string Decrypt3DES(string Value) { string sKey = "wyw308"; string sIV = "scf521"; SymmetricAlgorithm mCSP = new TripleDESCryptoServiceProvider(); ICryptoTransform ct; MemoryStream ms; CryptoStream cs; byte[] byt; mCSP.Key = Convert.FromBase64String(sKey); mCSP.IV = Convert.FromBase64String(sIV); mCSP.Mode = System.Security.Cryptography.CipherMode.ECB; mCSP.Padding = System.Security.Cryptography.PaddingMode.PKCS7; ct = mCSP.CreateDecryptor(mCSP.Key, mCSP.IV); byt = Convert.FromBase64String(Value); ms = new MemoryStream(); cs = new CryptoStream(ms, ct, CryptoStreamMode.Write); cs.Write(byt, 0, byt.Length); cs.FlushFinalBlock(); cs.Close(); return Encoding.UTF8.GetString(ms.ToArray()); } /// <summary> /// 带指定密钥和矢量的3DES解密 /// </summary> /// <param name="Value"></param> /// <param name="sKey"></param> /// <param name="sIV"></param> /// <returns></returns> public static string Decrypt3DES(string str,string sKey,string sIV) { SymmetricAlgorithm mCSP = new TripleDESCryptoServiceProvider(); ICryptoTransform ct; MemoryStream ms; CryptoStream cs; byte[] byt; mCSP.Key = Convert.FromBase64String(sKey); mCSP.IV = Convert.FromBase64String(sIV); mCSP.Mode = System.Security.Cryptography.CipherMode.ECB; mCSP.Padding = System.Security.Cryptography.PaddingMode.PKCS7; ct = mCSP.CreateDecryptor(mCSP.Key, mCSP.IV); byt = Convert.FromBase64String(str); ms = new MemoryStream(); cs = new CryptoStream(ms, ct, CryptoStreamMode.Write); cs.Write(byt, 0, byt.Length); cs.FlushFinalBlock(); cs.Close(); return Encoding.UTF8.GetString(ms.ToArray()); } #endregion #region 一个简单的加密解密方法,只支持英文 public static string EnCryptEnStr( string str ) //倒序加1加密 { byte[] by=new byte[str.Length]; for( int i=0; i<=str.Length-1; i++ ) { by[i]=( byte )( ( byte )str[i]+1 ); } str=""; for( int i=by.Length-1; i>=0; i-- ) { str+=( ( char )by[i] ).ToString( ); } return str; } public static string DeCryptEnStr( string str ) //顺序减1解码 { byte[] by=new byte[str.Length]; for( int i=0; i<=str.Length-1; i++ ) { by[i]=( byte )( ( byte )str[i]-1 ); } str=""; for( int i=by.Length-1; i>=0; i-- ) { str+=( ( char )by[i] ).ToString( ); } return str; } #endregion #region 一个简单的加密解密方法,在上一个的基础上支持中文 public static string EnCryptCnStr(string str) { string htext = ""; // blank text for ( int i = 0; i < str.Length; i++) { htext = htext + (char) (str[i] + 10 - 1 * 2); } return htext; } public static string DeCryptCnStr(string str) { string dtext = ""; for ( int i=0; i < str.Length; i++) { dtext = dtext + (char) (str[i] - 10 + 1*2); } return dtext; } #endregion #region Discuz论坛Md5加密删除 /// <summary> /// Discuz论坛Md5加密 /// </summary> /// <param name="str"></param> /// <returns></returns> public static string Md5(string str) { MD5 md5Hasher = MD5.Create(); string re=""; byte[] data = md5Hasher.ComputeHash(Encoding.UTF8.GetBytes(str+"%$#@!"));//yc for (int i = 0; i < data.Length; i++){ re += data[i].ToString("x2"); } return re; } #endregion } }
发表评论
-
C# 日期时间格式化
2010-07-29 10:45 1324为了达到不同的显示效 ... -
C# 如何去掉DataTable中的重复行
2010-07-29 10:42 4466.net 1.1中的解决方法 1建立一个DataSetH ... -
C# 数值格式化
2010-07-29 10:40 1095stringstr1 =string.Format({0N1} ... -
C# 常用文件操作
2010-07-29 10:39 1134C#追加文件 StreamWriter sw = ... -
C# 实现预览dwg文件完整源代码(无需autocad环境)
2010-07-29 10:31 6793using System; using System.Dra ... -
C# Windows 桌面应用只运行一个实例 2
2010-07-29 10:30 1160/// <summary> /// 构造 ... -
C# Windows 桌面应用只运行一个实例
2010-07-29 10:28 18521) 根据“程序集的签名”获取已运行的实例 /// < ... -
C# ini文件读写类
2010-07-29 10:26 1241using System; using System.IO; ...
相关推荐
C#_加密解密类_DES_3DES_MD5
C#加密解密,包括DES、MD5、SHA256
C#DES标准ECB加密解密示例源码,根据标准的C改的源码,与网上所搜索到的完全不一样,可以支持中文为密钥的加密,也可以支持为中文字符串的加密,如,密钥为:替天行道,明文为:来自替天行道的C#DES标准ECB加密解密...
DES加密解密算法。通过密钥对对字符串进行加密解密操作,64位加密
C#AES加解密,DES加解密,MD5加密方法类。
3种加密数据及对应解密方法,简单易懂,一次下载3种方法只要2积分,物超所值.赶快下载吧
C#的字符串加密码类,DES加密解密类 DESEncrypt 简单实用,直接导入。
MD5 单向加密 SHA1 单向加密 DES 双向,可解密 加密字符串 ...RSA加密解密及RSA签名和验证 RSA 的密钥产生 产生私钥 和公钥 RSA 方式加密 RSA的解密函数 获取Hash描述表 RSA签名 RSA 签名验证
C# DES加密解密方法类文件,下载后直接放入工程即可用了。
c#的3DES加密解密强制要求不能使用简单的密钥,这里按照3DES双倍长的算法原理,实现双倍长的加密解密
这引起都是C#中比较常见的加密解密类,包括RSA,DES,MD5,RC2等,以后肯定能用上,收藏一下
C# 加密解密类,可以直接附加到程序中运行,已经很完善了
C# 2015 windows项目,包含DES的加密解密算法的实现,MD5算法加密的实现,以及对注册表的读写操作。
说到加密,可能大家最熟悉的就是MD5了,一般保存密码、查看文档是否更新都是用到MD5加密,MD5加密是不可逆的,不能解密出明文。...C#里的MD5、DES、AES、RSA加密解密详细方法已封装,大家安心下载使用。
C# DES3 MD5 加密 解密 部分代码
javascript前端DES加密,VB.NET、C#后端服务器解密,经常用在账号密码验证的界面,避免用户凭据明文传输
常用加密解密方法:DES,RSA,TripleDES
包含常用的加密解密,封装了5种,有MD5,DES,RC2,Rijndael,RSA,3DES
C#中DES加密解密(兼容前端网页在线DES加密解密)