首页 > 开发 > 综合 > 正文

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

2024-07-21 02:24:34
字体:
来源:转载
供稿:网友
提要 命名空间: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算法。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表