前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C#自定义基于Base64的加密解密类

C#自定义基于Base64的加密解密类

原创
作者头像
用户7108768
修改2021-11-02 14:52:17
7980
修改2021-11-02 14:52:17
举报

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

代码语言:javascript
复制
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




}

}</pre> 

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档