加密通用类:

    public class EncryptClass
{
/// <summary>
/// 返回MD5加密字符串
/// </summary>
/// <param name="EncString"></param>
/// <returns></returns>
public static string GetMd5String(string EncString)
{
return FormsAuthentication.HashPasswordForStoringInConfigFile(EncString + "Hello CSH", "md5");
} // using System.Security.Cryptography;
public static string GetMd5Hash(String input)
{
if (input == null)
{
return null;
} MD5 md5Hash = MD5.Create(); // 将输入字符串转换为字节数组并计算哈希数据
byte[] data = md5Hash.ComputeHash(Encoding.UTF8.GetBytes(input)); // 创建一个 Stringbuilder 来收集字节并创建字符串
StringBuilder sBuilder = new StringBuilder(); // 循环遍历哈希数据的每一个字节并格式化为十六进制字符串
for (int i = ; i < data.Length; i++)
{
sBuilder.Append(data[i].ToString("x2"));
} // 返回十六进制字符串
return sBuilder.ToString();
} #region 密钥加密解密
//方法
//加密方法
public static string Encrypt(string pToEncrypt, string sKey)
{
DESCryptoServiceProvider des = new DESCryptoServiceProvider();
//把字符串放到byte数组中
//原来使用的UTF8编码,我改成Unicode编码了,不行
byte[] inputByteArray = Encoding.Default.GetBytes(pToEncrypt);
//byte[] inputByteArray=Encoding.Unicode.GetBytes(pToEncrypt); //建立加密对象的密钥和偏移量
//原文使用ASCIIEncoding.ASCII方法的GetBytes方法
//使得输入密码必须输入英文文本
des.Key = ASCIIEncoding.ASCII.GetBytes(sKey);
des.IV = ASCIIEncoding.ASCII.GetBytes(sKey);
MemoryStream ms = new MemoryStream();
CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write);
//Write the byte array into the crypto stream
//(It will end up in the memory stream)
cs.Write(inputByteArray, , inputByteArray.Length);
cs.FlushFinalBlock();
//Get the data back from the memory stream, and into a string
StringBuilder ret = new StringBuilder();
foreach (byte b in ms.ToArray())
{
//Format as hex
ret.AppendFormat("{0:X2}", b);
}
ret.ToString();
return ret.ToString();
} //解密方法
public static string Decrypt(string pToDecrypt, string sKey)
{
DESCryptoServiceProvider des = new DESCryptoServiceProvider(); //Put the input string into the byte array
byte[] inputByteArray = new byte[pToDecrypt.Length / ];
for (int x = ; x < pToDecrypt.Length / ; x++)
{
int i = (Convert.ToInt32(pToDecrypt.Substring(x * , ), ));
inputByteArray[x] = (byte)i;
} //建立加密对象的密钥和偏移量,此值重要,不能修改
des.Key = ASCIIEncoding.ASCII.GetBytes(sKey);
des.IV = ASCIIEncoding.ASCII.GetBytes(sKey);
MemoryStream ms = new MemoryStream();
CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write);
//Flush the data through the crypto stream into the memory stream
cs.Write(inputByteArray, , inputByteArray.Length);
cs.FlushFinalBlock(); //Get the decrypted data back from the memory stream
//建立StringBuild对象,CreateDecrypt使用的是流对象,必须把解密后的文本变成流对象
StringBuilder ret = new StringBuilder(); return System.Text.Encoding.Default.GetString(ms.ToArray());
} #endregion
}

其中:

Encrypt和Decrypt  加密算法指定键的大小对于此算法无效:是因为key值必须是8位64个字节,因此在输入时给予控制,注意key为Encoding.UTF8  必须输入8位秘钥否则报错

最新文章

  1. Ionic2学习笔记(8):Local Storage& SQLite
  2. IE8下获取iframe document EVENT对象的问题
  3. (摘自ItPub)物理standby中switchover时switchover pending的解决办法
  4. STL中erase的小心使用
  5. 《Programming WPF》翻译 第3章 4.我们进行到哪里了?
  6. 【poj】1001
  7. 畅通工程--hdu1232(并查集)
  8. 网络安全审查制度即将推出 手机App安全加密成必定趋势
  9. XMind与MindManager哪个好(网易云课堂老师:Array老师讲解稿)
  10. 安装php的memcached模块和扩展支持sasl
  11. python数据挖掘orange
  12. 更改EBS R12中forms的模式Servlet/Socket
  13. ASP.NET Core Api网关Ocelot的中文文档
  14. [翻译] Linux 内核中的位数组和位操作
  15. RobotFramework环境配置:默认以管理员权限运行cmd
  16. 关于使用 myeclipse连接MySql的问题
  17. 【POJ3585】Accumulation Degree 二次扫描与换根法
  18. AlertWindowManager 弹出提示窗口使用帮助(下)
  19. InnerClass annotations are missing corresponding EnclosingMember annotations. Such InnerClas...
  20. presto 0.166概述

热门文章

  1. Ubuntu系统下静态DNS配置详解
  2. Java笔试题解答
  3. oracle存储过程统计用户各表记录数
  4. 菜鸟谈谈C#中的构造函数和析构函数
  5. CentOS7.x系统根目录分区扩容
  6. update and的坑
  7. 从零开始搭建ELK+GPE监控预警系统
  8. 开源纯C#工控网关+组态软件(六)图元组件
  9. 谷歌浏览器 插件安装配置Momentum chrome
  10. Error parsing column 8 (IsRecommended=0 - SByte) Dapper查询mysql数据库可空的tinyint(1)一个错误