DES加密方法对字符串加密。

原创 2006年05月24日 15:08:00

using System;
using System.IO;
using System.Text;
using System.Security;
using System.Security.Cryptography;

namespace ClassLibraryPublic.DES
{
 /// <summary>
 /// DES 的摘要说明。
 /// </summary>
 public class DES
 {
  protected static string  DESKey = "12345678"; //DES密钥 (必须8字节)
  protected static string  DESIV = "12345678";  //对称算法的初始化向量  (必须8字节)

  public DES()
  {
   //
   // TODO: 在此处添加构造函数逻辑
   //
  }

  /// <summary>
  /// DES加密方法
  /// </summary>
  /// <param name="strInput">strInput</param>
  /// <returns>string</returns>
  public static string DESJiami(string strInput)
  {
   byte[] arrDESKey =Encoding.ASCII.GetBytes(DESKey); //把字符串转换为字节数组:注意这里最好不要用Convert.FromBase64String(),
   byte[] arrDESIV = Encoding.ASCII.GetBytes( DESIV ); //因为Convert.FromBase64String会改变字符串的长度,大概变为原来的4/3长度,而DES加密需要8字节Key(密钥)和IV(偏移量)

   byte[] arrInput =Encoding.UTF8.GetBytes(strInput.Trim());   //适合中文格式 注意:这里不能用Convert.FromBase64String

   int i=arrDESKey.Length;
   DESCryptoServiceProvider objDES= new DESCryptoServiceProvider();    //DES算法的加密的包对象
   ICryptoTransform objEncryptor=objDES.CreateEncryptor( arrDESKey, arrDESIV );  //创建加密对象
   
   MemoryStream ms=new MemoryStream();     //缓存流 
   CryptoStream cs=new CryptoStream(ms,objEncryptor,CryptoStreamMode.Write);        //把加密流联系到缓存流里去,方式写入,这里加密流的参数有:加密对象 (以便对流加密)
               
   cs.Write(arrInput,0,arrInput.Length);                 //用加密流从字节数组里读取字节
   cs.FlushFinalBlock();                                 //更新基础数据源(加密流),随后清除缓冲区。
   cs.Close();
  
   string strOutput=Convert.ToBase64String(ms.ToArray()); //把被更新的数据 返回字节数组(可用Convert.FromBase64String反转回来)
   return strOutput;
  }

  /// <summary>
  /// DES解密方法
  /// </summary>
  /// <param name="strInput">strInput</param>
  /// <returns>string</returns>
  public static string DESJiemi(string strInput)
  {
   byte[] arrDESKey =Encoding.ASCII.GetBytes(DESKey);   
   byte[] arrDESIV = Encoding.ASCII.GetBytes(DESIV);
   byte[] arrInput = Convert.FromBase64String(strInput.Trim());   
   
   DESCryptoServiceProvider objDES= new DESCryptoServiceProvider();   
   ICryptoTransform objEncryptor=objDES.CreateDecryptor( arrDESKey, arrDESIV );

   MemoryStream ms=new MemoryStream();
   CryptoStream cs=new CryptoStream(ms,objEncryptor,CryptoStreamMode.Write);
   cs.Write(arrInput,0,arrInput.Length);
   cs.FlushFinalBlock();
   cs.Close();
   
   string strOutput=Encoding.UTF8.GetString(ms.ToArray());
   return strOutput;
  }
 }
}

相关文章推荐

对于字符串进行DES加密的控件

  • 2006年02月23日 09:05
  • 23KB
  • 下载

iOS des加密转码16进制字符串

iOS des加密转码16进制字符串

des c++实现字符串加密

  • 2015年05月16日 11:35
  • 53KB
  • 下载

任意长度的字符串加密解密(DES)

  • 2014年11月04日 10:34
  • 4.93MB
  • 下载

iOS将字符串3DES加密后转Base64

为NSString写分类 NSString+Base64After3DES .h文件 #import #import @interface NSString (Base64After3DES)...

C# des对称加密字符串实例

  • 2014年06月28日 17:17
  • 13KB
  • 下载

C# 使用DES加密,解密字符串

1 DES类 using System; using System.Collections.Generic; using System.Linq; using System.Text; using ...
  • taoerit
  • taoerit
  • 2016年07月14日 09:40
  • 3798

java+3des加密+和字符串转换

  • 2016年06月12日 13:39
  • 4KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:DES加密方法对字符串加密。
举报原因:
原因补充:

(最多只允许输入30个字)