一个可逆加密的类(使用3DES加密)

 更新时间:2011年07月19日 23:29:34   作者:  
表示三重数据加密标准算法的基类,TripleDES 的所有实现都必须从此基类派生。是从 SymmetricAlgorithm 类里继承出来。
一、提要
命名空间:System.Security.Cryptography.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
{
/// <summary>
/// Class1 的摘要说明。
/// </summary>
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)
/// <summary>
/// 加密字符串
/// </summary>
/// <param name="Value">输入的字符串</param>
/// <returns>加密后的字符串</returns>
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)
/// <summary>
/// 解密字符串
/// </summary>
/// <param name="Value">加过密的字符串</param>
/// <returns>解密后的字符串</returns>
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算法。

相关文章

  • C#主线程堵塞问题的解决方案

    C#主线程堵塞问题的解决方案

    这篇文章主要介绍了C#主线程堵塞问题的解决方案,在C#中,异步方法和async/await关键字是用来解决主线程阻塞的有效方式,文中有相关的代码示例供大家参考,需要的朋友可以参考下
    2024-03-03
  • C# WORD操作实现代码

    C# WORD操作实现代码

    在当前项目开发过程中,客户有根据数据库数据生成WORD文档的需求,在和同事沟通的过程中,找到了两个解决方案
    2009-04-04
  • C#编写Windows服务实例代码

    C#编写Windows服务实例代码

    本篇文章主要介绍使用Microsoft Visual Studio2012可以很方便的创建一个Windows服务,本例实现一个向D盘的txt文件里,写入系统时间的Windows服务
    2013-10-10
  • C#中实现屏蔽Ctrl+C的方法

    C#中实现屏蔽Ctrl+C的方法

    这篇文章主要介绍了C#中实现屏蔽Ctrl+C的方法,在C#应用程序开发中有一定的实用价值,需要的朋友可以参考下
    2014-08-08
  • 利用Aspose.Cells和Excel模板导出统计数据

    利用Aspose.Cells和Excel模板导出统计数据

    这篇文章主要为大家详细介绍了利用Aspose.Cells和Excel模板导出复杂的统计数据,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-12-12
  • 深入C#判断操作系统类型的总结详解

    深入C#判断操作系统类型的总结详解

    本篇文章是对在C#中判断操作系统类型的总结进行了详细的分析介绍,需要的朋友参考下
    2013-05-05
  • C#基于ScottPlot实现可视化的示例代码

    C#基于ScottPlot实现可视化的示例代码

    这篇文章主要为大家详细介绍了C#如何基于ScottPlot实现可视化效果,文中的示例代码讲解详细,具有一定的借鉴价值,感兴趣的小伙伴可以跟随小编一起学习一下
    2024-01-01
  • C#实现常见加密算法的示例代码

    C#实现常见加密算法的示例代码

    这篇文章主要为大家详细介绍一下C#中一些常见加密算法(Base64编码、凯撒密码、Vigenere密码、DES、AES)以及它们的实现代码,感兴趣的可以了解一下
    2022-07-07
  • C#中的协变与逆变深入讲解

    C#中的协变与逆变深入讲解

    这篇文章主要给大家介绍了关于C#中协变与逆变的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-12-12
  • 如何用C#创建用户自定义异常浅析

    如何用C#创建用户自定义异常浅析

    虽然在 C# 语言中已经提供了很多异常处理类,但在实际编程中还是会遇到未涉及的一些异常处理,这篇文章主要给大家介绍了关于如何用C#创建用户自定义异常的相关资料,需要的朋友可以参考下
    2021-06-06

最新评论