再发3DES加密.
2006-10-23 13:30 Rainbow 阅读(705) 评论(0) 收藏 举报最近一直在为3DES加密烦呢啊.今天中午请了个高手一起.终于搞定了.自己的东西不敢独自用啊.发给有需要的同学啊.(是不是老牛吃嫩草了啊.多毕业快两年了啊)
再次说明下.当对方是用PHP,或者JSP做接受方时.一定要选好加密算法的填充模式.JSP默认就是PKCS7的.PHP不是.但是可以更改成PKCS7模式啊.
还有就是对key一定要做好双方的base64编码方式啊.我就是吃了很大亏.
代码如下:
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Security.Cryptography;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.IO;
using System.Text;
using System.Threading;
/// <summary>
/// dllEncrypt 的摘要说明
/// </summary>
public class dllEncrypt
{
public dllEncrypt()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
private const string sKey = "ztxjabcdsmsefghssoijwzlm";
//矢量,矢量可以为空
private const string sIV = "ztxjabcd";
//构造一个对称算法
private SymmetricAlgorithm mCSP = new TripleDESCryptoServiceProvider();
#region public string EncryptString(string Value)
///
/// 加密字符串
///
/// 输入的字符串
/// 加密后的字符串
public string EncryptString(string Value)
{
ICryptoTransform ct;
MemoryStream ms;
CryptoStream cs;
byte[] byt = Encoding.Default.GetBytes(Value);
mCSP.Key = Encoding.Default.GetBytes(sKey);
mCSP.IV = Encoding.Default.GetBytes(sIV);
//指定加密的运算模式
mCSP.Mode = System.Security.Cryptography.CipherMode.ECB;
//获取或设置加密算法的填充模式
mCSP.Padding = System.Security.Cryptography.PaddingMode.PKCS7;
ct = mCSP.CreateEncryptor(mCSP.Key, mCSP.IV);
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 = Encoding.Default.GetBytes(sKey);
mCSP.GenerateIV();
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.Default.GetString(ms.ToArray());
}
#endregion
}
浙公网安备 33010602011771号