手机
当前位置:查字典教程网 >编程开发 >C#教程 >一个可逆加密的类(使用3DES加密)
一个可逆加密的类(使用3DES加密)
摘要:一、提要命名空间:System.Security.Cryptography.TripleDES类简单说明:表示三重数据加密标准算法的基类,T...

一、提要

命名空间: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算法。

【一个可逆加密的类(使用3DES加密)】相关文章:

C#简单的加密类实例

在C#中 webbrowser的使用心得

用 C# 编写一个停放在任务栏上的图标程序

C#组合函数的使用详解

C#中通过API实现的打印类 实例代码

C#中字符串的加密的源码

C#加密在实际中的应用

基于一个应用程序多线程误用的分析详解

深入HTTP head的使用详解

c#中DateTime.Now函数的使用详解

精品推荐
分类导航