欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

C#实现简单的3DES加密解密功能示例

程序员文章站 2023-12-09 17:42:15
本文实例讲述了c#实现简单的3des加密解密功能。分享给大家供大家参考,具体如下: using system; using system.collections...

本文实例讲述了c#实现简单的3des加密解密功能。分享给大家供大家参考,具体如下:

using system;
using system.collections.generic;
using system.componentmodel;
using system.data;
using system.drawing;
using system.linq;
using system.text;
using system.windows.forms;
using system.security.cryptography;
using system.io;
namespace _3des
{
  public partial class form1 : form
  {
    public form1()
    {
      initializecomponent();
    }
    private void crypebtn_click(object sender, eventargs e)
    {
      //实例化三倍des服务提供者类
      tripledescryptoserviceprovider tdes = new tripledescryptoserviceprovider();
      //随机生成密钥和iv向量
      tdes.generateiv();
      tdes.generatekey();
      //执行加密
      byte[] encrypebyte = encryptext(strbox.text, tdes.key, tdes.iv);
      //显示密文和密钥
      keybox.text = encoding.ascii.getstring(tdes.key);
      ivbox.text = encoding.ascii.getstring(tdes.iv);
      crypebox.text = encoding.utf8.getstring(encrypebyte);
      //执行解密
      str2box.text = decryptext(encrypebyte, tdes.key, tdes.iv);
    }
    #region 加密
    /// <summary>
    /// 执行三倍des加密的方法
    /// </summary>
    /// <param name="str">明文字符串</param>
    /// <param name="key">密钥</param>
    /// <param name="iv">iv向量</param>
    /// <returns>密文的字节序列</returns>
    private byte[] encryptext(string str, byte[] key, byte[] iv)
    {
      //创建一个内存流,用于存放密文
      memorystream ms = new memorystream();
      //创建一个三倍des服务提供者对象
      tripledescryptoserviceprovider tdes = new tripledescryptoserviceprovider();
      //创建一个加密流,用于加密操作
      cryptostream cs = new cryptostream(ms,
        tdes.createencryptor(key, iv),
        cryptostreammode.write);
      //定义输入,执行加密操作
      cs.write(encoding.utf8.getbytes(str), 0, str.length);
      cs.flushfinalblock();
      //返回将密文的内存流转换为字节序列并返回
      return ms.toarray();
    }
    #endregion
    #region 解密
    /// <summary>
    /// 执行三倍des解密的方法
    /// </summary>
    /// <param name="crypetext">密文的字节序列</param>
    /// <param name="key">密钥</param>
    /// <param name="iv">iv向量</param>
    /// <returns>明文的字符串</returns>
    private string decryptext(byte[] crypetext, byte[] key, byte[] iv)
    {
      //创建一个内存流,用于存放密文
      memorystream ms = new memorystream(crypetext);
      //创建一个三倍des服务提供者对象
      tripledescryptoserviceprovider tdes = new tripledescryptoserviceprovider();
      //创建解密流
      cryptostream cs = new cryptostream(ms,
        tdes.createdecryptor(key, iv),
        cryptostreammode.read);
      //创建一个用于存放明文的容器(字节序列)
      byte[] decrypebytes = new byte[crypetext.length];
      //执行解密
      cs.read(decrypebytes, 0, crypetext.length);
      //返回解密后的明文字符串
      return encoding.utf8.getstring(decrypebytes);
    }
    #endregion
  }
}

运行效果:

C#实现简单的3DES加密解密功能示例

ps:关于加密解密感兴趣的朋友还可以参考本站在线工具:

文字在线加密解密工具(包含aes、des、rc4等):

md5在线加密工具:
http://tools.jb51.net/password/createmd5password

在线散列/哈希算法加密工具:

在线md5/hash/sha-1/sha-2/sha-256/sha-512/sha-3/ripemd-160加密工具:

在线sha1/sha224/sha256/sha384/sha512加密工具:

更多关于c#相关内容还可查看本站专题:《c#加密与解密算法与技巧总结》、《c#窗体操作技巧汇总》、《c#常见控件用法教程》、《winform控件用法总结》、《c#数据结构与算法教程》、《c#数组操作技巧总结》及《c#面向对象程序设计入门教程

希望本文所述对大家c#程序设计有所帮助。