【概念】

数据加密算法(Data Encryption Algorithm,DEA)是一种对称加密算法,很可能是使用最广泛的密钥系统,特别是在保护金融数据的安全中,最初开发的DEA是嵌入硬件中的。通常,自动取款机(Automated Teller Machine,ATM)都使用DEA。它出自IBM的研究工作【from baidu】

【部分代码实现】

#region DES加密/解密字符串
//默认密钥向量
private static byte[] Keys = { 0x11, 0x22, 0x33, 0x44, 0x55, 0xAA, 0xBB, 0xCC }; public static string EncryptDES(string encryptString)
{
string encryptKey = StringUtils.ConvertToStr(GetConfig("CryptDESKey"), "abcd");//GetConfig方法为从配置文件读区数据
return EncryptDES(encryptString, encryptKey);
}
/// <summary>
/// DES加密字符串
/// </summary>
/// <param name="encryptString">待加密的字符串</param>
/// <param name="encryptKey">加密密钥,要求为8位</param>
/// <returns>加密成功返回加密后的字符串,失败返回源串</returns>
public static string EncryptDES(string encryptString, string encryptKey)
{
try
{
byte[] rgbKey = Encoding.UTF8.GetBytes(encryptKey.Substring(, ));
byte[] rgbIV = Keys;
byte[] inputByteArray = Encoding.UTF8.GetBytes(encryptString);
DESCryptoServiceProvider dCSP = new DESCryptoServiceProvider();
MemoryStream mStream = new MemoryStream();
CryptoStream cStream = new CryptoStream(mStream, dCSP.CreateEncryptor(rgbKey, rgbIV), CryptoStreamMode.Write);
cStream.Write(inputByteArray, , inputByteArray.Length);
cStream.FlushFinalBlock();
return Convert.ToBase64String(mStream.ToArray()).Replace("+", "%20");
}
catch (Exception ex)
{
return string.Empty;
}
}
public static string DecryptDES(string decryptString)
{
string decryptKey = StringUtils.ConvertToStr(GetConfig("CryptDESKey"), "abcd");
return DecryptDES(decryptString, decryptKey);
}
/// <summary>
/// DES解密字符串
/// </summary>
/// <param name="decryptString">待解密的字符串</param>
/// <param name="decryptKey">解密密钥,要求为8位,和加密密钥相同</param>
/// <returns>解密成功返回解密后的字符串,失败返源串</returns>
public static string DecryptDES(string decryptString, string decryptKey)
{
try
{
byte[] rgbKey = Encoding.UTF8.GetBytes(decryptKey);
byte[] rgbIV = Keys;
byte[] inputByteArray = Convert.FromBase64String(decryptString.Replace(' ', '+'));
DESCryptoServiceProvider DCSP = new DESCryptoServiceProvider();
MemoryStream mStream = new MemoryStream();
CryptoStream cStream = new CryptoStream(mStream, DCSP.CreateDecryptor(rgbKey, rgbIV), CryptoStreamMode.Write);
cStream.Write(inputByteArray, , inputByteArray.Length);
cStream.FlushFinalBlock();
return Encoding.UTF8.GetString(mStream.ToArray());
}
catch (Exception ex)
{
WrLogger logger = new WrLogger();
logger.WriteException("App_Code.WebUtils.DecryptDES(string, string) Error, DecryptString:" + decryptString, ex);
return string.Empty;
}
} #endregion

注:此日志仅留作以后查询。

最新文章

  1. Elasticsearch Configuration 中文版
  2. MysqlNDB集群配置
  3. linux下重启apache
  4. Unity 3D学习之《Unity 3D 手机游戏开发》1
  5. 【Python】range和xrange区别
  6. Struts2之OGNL
  7. What is a Statistic?
  8. IIS7.5支持解析读取.json文件数据
  9. facebook 开源文件传输 lib
  10. Mapnik 教程
  11. HTTP persistent connection
  12. Git分支管理的基本操作
  13. 让QMainWindow也表现出QDialog的exec函数的特征
  14. Python快速排序
  15. ORACLE归档模式和非归档模式的利与弊
  16. Java中线程池的学习
  17. RaspberryPI 连接rs232模块接线图
  18. HDU 1074 Doing Homework(状态压缩)
  19. fragment 数据传递,通信
  20. ECMAScript中所有的函数的参数都是按值传递的

热门文章

  1. JavaSE基础复习---2---2018/9/28
  2. 【MySql】mysql 慢日志查询工具之mysqldumpslow
  3. centos7下安装elasticSearch错误总结(单节点模式)
  4. 新手入门Sqlalchemy
  5. Qt Qml 汽车仪表
  6. Linux-ls,cd,type命令
  7. Leetcode 673.最长递增子序列的个数
  8. C++学习---- virtual的三种用法
  9. shell功能
  10. ubuntu 14.04 安装opencv 3.0 测试