C#实现基于Base64的加密解密类实例
本文实例讲述了C#实现基于Base64的加密解密类。分享给大家供大家参考。具体如下:
这个C#类是一个基于Base64的加密和解密类,用户可以可以使用默认的秘钥进行加密、解密,也可以自己设定秘钥进行加密和解密,非常实用
usingSystem;
usingSystem.Security.Cryptography;
usingSystem.Text;
namespaceDotNet.Utilities
{
///<summary>
///Encrypt的摘要说明。
///</summary>
publicclassDEncrypt
{
///<summary>
///构造方法
///</summary>
publicDEncrypt()
{
}
#region使用缺省密钥字符串加密/解密string
///<summary>
///使用缺省密钥字符串加密string
///</summary>
///<paramname="original">明文</param>
///<returns>密文</returns>
publicstaticstringEncrypt(stringoriginal)
{
returnEncrypt(original,"sharejs.com");
}
///<summary>
///使用缺省密钥字符串解密string
///</summary>
///<paramname="original">密文</param>
///<returns>明文</returns>
publicstaticstringDecrypt(stringoriginal)
{
returnDecrypt(original,"sharejs.com",System.Text.Encoding.Default);
}
#endregion
#region使用给定密钥字符串加密/解密string
///<summary>
///使用给定密钥字符串加密string
///</summary>
///<paramname="original">原始文字</param>
///<paramname="key">密钥</param>
///<paramname="encoding">字符编码方案</param>
///<returns>密文</returns>
publicstaticstringEncrypt(stringoriginal,stringkey)
{
byte[]buff=System.Text.Encoding.Default.GetBytes(original);
byte[]kb=System.Text.Encoding.Default.GetBytes(key);
returnConvert.ToBase64String(Encrypt(buff,kb));
}
///<summary>
///使用给定密钥字符串解密string
///</summary>
///<paramname="original">密文</param>
///<paramname="key">密钥</param>
///<returns>明文</returns>
publicstaticstringDecrypt(stringoriginal,stringkey)
{
returnDecrypt(original,key,System.Text.Encoding.Default);
}
///<summary>
///使用给定密钥字符串解密string,返回指定编码方式明文
///</summary>
///<paramname="encrypted">密文</param>
///<paramname="key">密钥</param>
///<paramname="encoding">字符编码方案</param>
///<returns>明文</returns>
publicstaticstringDecrypt(stringencrypted,stringkey,Encodingencoding)
{
byte[]buff=Convert.FromBase64String(encrypted);
byte[]kb=System.Text.Encoding.Default.GetBytes(key);
returnencoding.GetString(Decrypt(buff,kb));
}
#endregion
#region使用缺省密钥字符串加密/解密/byte[]
///<summary>
///使用缺省密钥字符串解密byte[]
///</summary>
///<paramname="encrypted">密文</param>
///<paramname="key">密钥</param>
///<returns>明文</returns>
publicstaticbyte[]Decrypt(byte[]encrypted)
{
byte[]key=System.Text.Encoding.Default.GetBytes("sharejs.com");
returnDecrypt(encrypted,key);
}
///<summary>
///使用缺省密钥字符串加密
///</summary>
///<paramname="original">原始数据</param>
///<paramname="key">密钥</param>
///<returns>密文</returns>
publicstaticbyte[]Encrypt(byte[]original)
{
byte[]key=System.Text.Encoding.Default.GetBytes("sharejs.com");
returnEncrypt(original,key);
}
#endregion
#region使用给定密钥加密/解密/byte[]
///<summary>
///生成MD5摘要
///</summary>
///<paramname="original">数据源</param>
///<returns>摘要</returns>
publicstaticbyte[]MakeMD5(byte[]original)
{
MD5CryptoServiceProviderhashmd5=newMD5CryptoServiceProvider();
byte[]keyhash=hashmd5.ComputeHash(original);
hashmd5=null;
returnkeyhash;
}
///<summary>
///使用给定密钥加密
///</summary>
///<paramname="original">明文</param>
///<paramname="key">密钥</param>
///<returns>密文</returns>
publicstaticbyte[]Encrypt(byte[]original,byte[]key)
{
TripleDESCryptoServiceProviderdes=newTripleDESCryptoServiceProvider();
des.Key=MakeMD5(key);
des.Mode=CipherMode.ECB;
returndes.CreateEncryptor().TransformFinalBlock(original,0,original.Length);
}
///<summary>
///使用给定密钥解密数据
///</summary>
///<paramname="encrypted">密文</param>
///<paramname="key">密钥</param>
///<returns>明文</returns>
publicstaticbyte[]Decrypt(byte[]encrypted,byte[]key)
{
TripleDESCryptoServiceProviderdes=newTripleDESCryptoServiceProvider();
des.Key=MakeMD5(key);
des.Mode=CipherMode.ECB;
returndes.CreateDecryptor().TransformFinalBlock(encrypted,0,encrypted.Length);
}
#endregion
}
}
希望本文所述对大家的C#程序设计有所帮助。