欢迎光临
我们一直在努力

对3DES加密的运用的一个简单示例-.NET教程,安全和优化

建站超值云服务器,限时71元/月

提要

命名空间: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算法。
赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » 对3DES加密的运用的一个简单示例-.NET教程,安全和优化
分享到: 更多 (0)