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

本文实例讲述了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
  }
}

运行效果:

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

文字在线加密解密工具(包含AES、DES、RC4等):
http://tools.jb51.net/password/txt_encode

MD5在线加密工具:
http://tools.jb51.net/password/CreateMD5Password

在线散列/哈希算法加密工具:
http://tools.jb51.net/password/hash_encrypt

在线MD5/hash/SHA-1/SHA-2/SHA-256/SHA-512/SHA-3/RIPEMD-160加密工具:
http://tools.jb51.net/password/hash_md5_sha

在线sha1/sha224/sha256/sha384/sha512加密工具:
http://tools.jb51.net/password/sha_encode

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

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

时间: 2017-08-26

C#使用DES和AES实现加密解密功能示例

本文实例讲述了C#使用DES和AES实现加密解密功能.分享给大家供大家参考,具体如下: using System; using System.Text; using System.Security.Cryptography; using System.IO; namespace MyCryptography { /// <summary> /// DES加密解密 /// </summary> public class DES { /// <summary> /// 获取

C#编写的Base64加密和解密类

这个C#类是一个基于Base64的加密和解密类,用户可以可以使用默认的秘钥进行加密.解密,也可以自己设定秘钥进行加密和解密,非常实用 代码一:非常精简的代码 /// <summary> /// Base64加密,解密方法 /// </summary> /// <paramname="s">输入字符串</param> /// <paramname="c">true-加密,false-解密</param&

C# 3DES加密详解

最近一个项目中,因为服务端是用的java开发的,客户端是用的C#,由于通信部分采用到了3DES加密,所以做个记录,以备以后需要的时候直接用. 这是对方(java)的加密算法,和网上流传的代码也差不多(主密钥直接写死了,方便测试) package org.zwork.market.mina.msg; import java.security.spec.KeySpec; import javax.crypto.Cipher; import javax.crypto.SecretKey; import

php实现和c#一致的DES加密解密实例

PHP实现和c#一致的DES加密解密,可以从网上搜到一大堆,但是测试后发现都没法用.以下正确代码是我经过苦苦才找到的.希望大家在系统整合时能用的上. 注意:key的长度为8位以内. //C# 版DES 加解密算法 using System; using System.Data; using System.Configuration; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web

C# DES加密算法中向量的作用详细解析

DES一共就有4个参数参与运作:明文.密文.密钥.向量.为了初学者容易理解,可以把4个参数的关系写成:密文=明文+密钥+向量:明文=密文-密钥-向量.为什么要向量这个参数呢?因为如果有一篇文章,有几个词重复,那么这个词加上密钥形成的密文,仍然会重复,这给破解者有机可乘,破解者可以根据重复的内容,猜出是什么词,然而一旦猜对这个词,那么,他就能算出密钥,整篇文章就被破解了!加上向量这个参数以后,每块文字段都会依次加上一段值,这样,即使相同的文字,加密出来的密文,也是不一样的,算法的安全性大大提高!

C#编写DES加密、解密类

这个C#类封装的DES加密解密,可以使用默认秘钥进行加密.解密,也可以自定义秘钥进行加密.解密,调用简单方便. 示例一: using System; using System.Security.Cryptography; using System.Text; namespace DotNet.Utilities { /// <summary> /// DES加密/解密类. /// </summary> public class DESEncrypt { public DESEncr

C#的3DES加密解密算法实例代码

C#类如下: 复制代码 代码如下: using System;using System.Collections.Generic;using System.Text;using System.Security.Cryptography;using System.IO; namespace ConsoleApplication1{    /// <summary>    /// 加解密类    /// </summary>    public class EncryptHelper  

C#实现对AES加密和解密的方法

AES简介 AES(The Advanced Encryption Standard)是美国国家标准与技术研究所用于加密电子数据的规范.它被预期能成为人们公认的加密包括金融.电信和政府数字信息的方法. AES 是一个新的可以用于保护电子数据的加密算法.明确地说,AES 是一个迭代的.对称密钥分组的密码,它可以使用128.192 和 256 位密钥,并且用 128 位(16字节)分组加密和解密数据.与公共密钥密码使用密钥对不同,对称密钥密码使用相同的密钥加密和解密数据.通过分组密码返回的加密数据

asp实现的sha1加密解密代码(和C#兼容)

在百度找的几个asp sha1(vbs写的)加密结果和asp.net的sha1加密结果不一样,asp.net sha1加密完后是40位,网上找的asp sha1加密是64位,还以为asp.net做了截取(如网上的asp的md5机密和asp.net位数不一样,是做了截取的问题),但是asp的64位加密结果并没有包含asp.net的40位结果,看来找到的版本和asp.net的加密算法不一样.   最后还是靠翻墙用google找到了一个js版本的sha1加密代码结合asp使用后结果和asp.net的s

基于C#对用户密码使用MD5加密与解密

C#中常涉及到对用户密码的加密于解密的算法,其中使用MD5加密是最常见的的实现方式.本文总结了通用的算法并结合了自己的一点小经验,分享给大家. 一.使用16位.32位.64位MD5方法对用户名加密 1)16位的MD5加密 /// <summary> /// 16位MD5加密 /// </summary> /// <param name="password"></param> /// <returns></returns&

c#通过DES加密算法加密大文件的方法

本文实例讲述了c#通过DES加密算法加密大文件的方法.分享给大家供大家参考.具体实现方法如下: using System.Collections; using System.Configuration; using System.Data; using System.Linq; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.HtmlControls; using Syst

des加密解密源码 C# key值问题分析

公司协议安全需求.需要对传输内容做des.md5加密. 因为是新人.刚交给我这个任务的时候有点眩晕.就开始在网上找各种des加密的内容.因为不懂以为需要把原理也搞明白,最后误了时间.把自己也搞糊涂了.当然,逻辑能力强.有兴趣的朋友可以试着去搞搞. 先贴加密.解密的源码: 复制代码 代码如下: /// <summary> /// 加密数据 /// </summary> /// <param name="Text"></param> ///

VBS加密解密源码(UserAccounts.CommonDialog) 脚本之家修正版

用法: 1.copy下面代码至文本文档 2.将文件后缀名改为.vbs 3.双击运行 复制代码 代码如下: Ans = InPutBox("请输入要执行的操作:1.加密,2.解密,3.退出.") Ans = Int(Ans) If Ans =1 Then set fso=createobject("scripting.filesystemobject") Set objDialog = CreateObject("UserAccounts.CommonDia

PHP实现的DES加密解密封装类完整实例

本文实例讲述了PHP实现的DES加密解密封装类.分享给大家供大家参考,具体如下: <?php /** * PHP版DES加解密类 * 可与java的DES(DESede/CBC/PKCS5Padding)加密方式兼容 * */ class CryptDes { var $key; var $iv; function CryptDes($key, $iv){ $this->key = $key; $this->iv = $iv; } function encrypt($input){ $s

java中DES加密解密

废话不多说,直接奉上代码: 复制代码 代码如下: package com.eabax.plugin.yundada.utils; import java.io.IOException; import java.security.InvalidKeyException; import java.security.NoSuchAlgorithmException; import java.security.SecureRandom; import java.security.spec.Invalid

PHP实现的DES加密解密类定义与用法示例

本文实例讲述了PHP实现的DES加密解密类定义与用法.分享给大家供大家参考,具体如下: 今天写App接口的时候需要传递加密数据给APP端,于是就写了下面的DES加密类,亲测正确代码如下 class CryptDes { function __construct(){ $this->key = 'codelovers'; //密钥 $this->iv = '15548632'; //偏移量 } /* * 加密 */ function encrypt($input){ $size = mcrypt

PHP中加密解密函数与DES加密解密实例

本文实例讲述了PHP中加密解密函数与DES加密解密的应用,分享给大家供大家参考.具体如下: 例子,php加密解密的例子 加密函数: 复制代码 代码如下: /* *功能:对字符串进行加密处理 *参数一:需要加密的内容 *参数二:密钥 */ function passport_encrypt($str,$key){ //加密函数  srand((double)microtime() * 1000000);  $encrypt_key=md5(rand(0, 32000));  $ctr=0;  $t

Java实现的DES加密解密工具类实例

本文实例讲述了Java实现的DES加密解密工具类.分享给大家供大家参考,具体如下: 一个工具类,很常用,不做深入研究了,那来可直接用 DesUtil.java package lsy; import java.security.Key; import java.security.SecureRandom; import javax.crypto.Cipher; import javax.crypto.KeyGenerator; import javax.crypto.SecretKey; imp

asp.net实现的DES加密解密操作示例

本文实例讲述了asp.net实现的DES加密解密操作.分享给大家供大家参考,具体如下: //加密方法 private string encrypt(string strToEncrypt) { if (strToEncrypt == null || strToEncrypt == "") return strToEncrypt; DESCryptoServiceProvider des = new DESCryptoServiceProvider(); //把字符串放到byte数组中,

PHP简单实现DES加密解密的方法

本文实例讲述了PHP简单实现DES加密解密的方法.分享给大家供大家参考,具体如下: des加密: function des_encrypt($str, $key) { $block = mcrypt_get_block_size('des', 'ecb'); $pad = $block - (strlen($str) % $block); $str .= str_repeat(chr($pad), $pad); return mcrypt_encrypt(MCRYPT_DES, $key, $s