当前位置: 移动技术网 > IT编程>开发语言>c# > C#实现基于Base64的加密解密类实例

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

2019年07月18日  | 移动技术网IT编程  | 我要评论
本文实例讲述了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#程序设计有所帮助。

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网