新客网WWW.XKER.COM:致力做中国最专业的网络学院!
学院: 操作系统 - 网络应用 - 服务器 - 网络安全 - 工具软件 - 办公软件 - Web开发 - 数据库 - 网页设计 - 图形图像 - 媒体动画 - 硬件学堂 - 存储频道 - QQ专区
您的位置:首页 > 软件开发 > .Net开发 > Asp.net教程 > 正文:对3DES加密的运用的一个简单示例

对3DES加密的运用的一个简单示例

新客网 XKER.COM 2005-09-09 来源: 收藏本文
提要
命名空间:System.Security.Cryptography.TripleDES 类
简单说明: 表示三重数据加密标准算法的基类,TripleDES 的所有实现都必须从此基类派生,但TripleDES是从 SymmetricAlgorithm 类里继承出来。TripleDES 使用 DES 算法的三次连续迭代。它可以使用两个或三个 56 位密钥。
      使用目的:比较安全的加密一种方式,密钥和矢量的不同,会生产不同的加密字串。因为是DES算法的三次连续迭代,而且算法可逆,这样对于数据保密性和可恢复性都不错。
    使用方法:直接进行字符串输入和输出。
二、代码示例
本代码参照了部分MSDN上的代码示例,再根据自己的实际情况,补充了一部分MSDN上没有提到的内容
 
using System;
using System.Security;
using System.Security.Cryptography;
using System.IO;
using System.Text;
using System.Threading;
 
namespace TRIP3DES
{
    ///
    /// Class1 的摘要说明。
    ///
    public class dllEncrypt
    {
      //密钥
      private const string sKey = "qJzGEh6hESZDVJeCnFPGuxzaiB7NLQM3";
      //矢量,矢量可以为空
      private const string sIV = "qcDY6X+aPLw=";
      //构造一个对称算法
      private SymmetricAlgorithm mCSP = new TripleDESCryptoServiceProvider();
 
        public dllEncrypt(){}
 
      #region public string EncryptString(string Value)
      ///
      /// 加密字符串
      ///
      /// 输入的字符串
      /// 加密后的字符串
      public string EncryptString(string Value)
      {
         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(Value);
         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());
      }
      #endregion
 
      #region public string DecryptString(string Value)
      ///
      /// 解密字符串
      ///
      /// 加过密的字符串
      /// 解密后的字符串
      public string DecryptString(string Value)
      {
         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());
      }
      #endregion
    }
}
 
三、总结
做成类库对于密钥和矢量的保管比较方便,输入输出全部是string型变量,这样也比较方便,密钥的生成可以用mSCP. GenerateKey()来生成,矢量的生成也可以用mCSP.GenerateIV()来生成。大家也可以自己灵活的编写符合自己的3DES算法。
收藏】 【评论】 【推荐】 【投稿】 【打印】 【关闭
发表评论
要记得去论坛讨论,点击注册新会员匿名评论
评论内容:不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
阅读排行
随机推荐
实用信息推荐