欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

C#实现基于Base64的加密解密类实例

程序员文章站 2023-12-04 17:42:28
本文实例讲述了c#实现基于base64的加密解密类。分享给大家供大家参考。具体如下: 这个c#类是一个基于base64的加密和解密类,用户可以可以使用默认的秘钥进行加密、...

本文实例讲述了c#实现基于base64的加密解密类。分享给大家供大家参考。具体如下:

这个c#类是一个基于base64的加密和解密类,用户可以可以使用默认的秘钥进行加密、解密,也可以自己设定秘钥进行加密和解密,非常实用

using system;
using system.security.cryptography; 
using system.text;
namespace dotnet.utilities
{
 /// <summary>
 /// encrypt 的摘要说明。
 /// </summary>
 public class dencrypt
 {
  /// <summary>
  /// 构造方法
  /// </summary>
  public dencrypt() 
  { 
  } 
  #region 使用 缺省密钥字符串 加密/解密string
  /// <summary>
  /// 使用缺省密钥字符串加密string
  /// </summary>
  /// <param name="original">明文</param>
  /// <returns>密文</returns>
  public static string encrypt(string original)
  {
   return encrypt(original,"sharejs.com");
  }
  /// <summary>
  /// 使用缺省密钥字符串解密string
  /// </summary>
  /// <param name="original">密文</param>
  /// <returns>明文</returns>
  public static string decrypt(string original)
  {
   return decrypt(original,"sharejs.com",system.text.encoding.default);
  }
  #endregion
  #region 使用 给定密钥字符串 加密/解密string
  /// <summary>
  /// 使用给定密钥字符串加密string
  /// </summary>
  /// <param name="original">原始文字</param>
  /// <param name="key">密钥</param>
  /// <param name="encoding">字符编码方案</param>
  /// <returns>密文</returns>
  public static string encrypt(string original, string key) 
  { 
   byte[] buff = system.text.encoding.default.getbytes(original); 
   byte[] kb = system.text.encoding.default.getbytes(key);
   return convert.tobase64string(encrypt(buff,kb));   
  }
  /// <summary>
  /// 使用给定密钥字符串解密string
  /// </summary>
  /// <param name="original">密文</param>
  /// <param name="key">密钥</param>
  /// <returns>明文</returns>
  public static string decrypt(string original, string key)
  {
   return decrypt(original,key,system.text.encoding.default);
  }
  /// <summary>
  /// 使用给定密钥字符串解密string,返回指定编码方式明文
  /// </summary>
  /// <param name="encrypted">密文</param>
  /// <param name="key">密钥</param>
  /// <param name="encoding">字符编码方案</param>
  /// <returns>明文</returns>
  public static string decrypt(string encrypted, string key,encoding encoding) 
  {    
   byte[] buff = convert.frombase64string(encrypted); 
   byte[] kb = system.text.encoding.default.getbytes(key);
   return encoding.getstring(decrypt(buff,kb));   
  } 
  #endregion
  #region 使用 缺省密钥字符串 加密/解密/byte[]
  /// <summary>
  /// 使用缺省密钥字符串解密byte[]
  /// </summary>
  /// <param name="encrypted">密文</param>
  /// <param name="key">密钥</param>
  /// <returns>明文</returns>
  public static byte[] decrypt(byte[] encrypted) 
  { 
   byte[] key = system.text.encoding.default.getbytes("sharejs.com"); 
   return decrypt(encrypted,key);   
  }
  /// <summary>
  /// 使用缺省密钥字符串加密
  /// </summary>
  /// <param name="original">原始数据</param>
  /// <param name="key">密钥</param>
  /// <returns>密文</returns>
  public static byte[] encrypt(byte[] original) 
  { 
   byte[] key = system.text.encoding.default.getbytes("sharejs.com"); 
   return encrypt(original,key);   
  } 
  #endregion
  #region 使用 给定密钥 加密/解密/byte[]
  /// <summary>
  /// 生成md5摘要
  /// </summary>
  /// <param name="original">数据源</param>
  /// <returns>摘要</returns>
  public static byte[] makemd5(byte[] original)
  {
   md5cryptoserviceprovider hashmd5 = new md5cryptoserviceprovider();  
   byte[] keyhash = hashmd5.computehash(original);    
   hashmd5 = null; 
   return keyhash;
  }
  /// <summary>
  /// 使用给定密钥加密
  /// </summary>
  /// <param name="original">明文</param>
  /// <param name="key">密钥</param>
  /// <returns>密文</returns>
  public static byte[] encrypt(byte[] original, byte[] key) 
  { 
   tripledescryptoserviceprovider des = new tripledescryptoserviceprovider();    
   des.key = makemd5(key);
   des.mode = ciphermode.ecb; 
   return des.createencryptor().transformfinalblock(original, 0, original.length);   
  } 
  /// <summary>
  /// 使用给定密钥解密数据
  /// </summary>
  /// <param name="encrypted">密文</param>
  /// <param name="key">密钥</param>
  /// <returns>明文</returns>
  public static byte[] decrypt(byte[] encrypted, byte[] key) 
  { 
   tripledescryptoserviceprovider des = new tripledescryptoserviceprovider(); 
   des.key = makemd5(key);  
   des.mode = ciphermode.ecb; 
   return des.createdecryptor().transformfinalblock(encrypted, 0, encrypted.length);
  } 
  #endregion
 }
}

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