字符串加密解密函数 (C#)

发表于:2010-1-29 10:19

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:未知    来源:51Testing软件测试网采编

#
DotNet

  using System;

  using System.Text;

  using System.Security.Cryptography;

  using System.IO;

  //默认密钥向量

  private static byte[] Keys = { 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF };

  /// <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(0, 8));

  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, 0, inputByteArray.Length);

  cStream.FlushFinalBlock();

  return Convert.ToBase64String(mStream.ToArray());

  }

  catch

  {

  return encryptString;

  }

  }

  /// <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);

  DESCryptoServiceProvider DCSP = new DESCryptoServiceProvider();

  MemoryStream mStream = new MemoryStream();

  CryptoStream cStream = new CryptoStream(mStream, DCSP.CreateDecryptor(rgbKey, rgbIV), CryptoStreamMode.Write);

  cStream.Write(inputByteArray, 0, inputByteArray.Length);

  cStream.FlushFinalBlock();

  return Encoding.UTF8.GetString(mStream.ToArray());

  }

  catch

  {

  return decryptString;

  }

  }

《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号