一个加密帮助类,包含了各种方式的加密

本文详细介绍了使用 C# 实现 DES 加密和解密的过程,包括密钥生成、加密、解密方法及使用 MD5 和 SHA1 进行数据加密的技术要点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    优快云广告是越来越多了,所有博客笔记不再更新,新网址 DotNet笔记

using System.Web.Security;
using System.Security.Cryptography;
using System.Text;
using System.IO;
using System;
public class EncryptHelper
{
    // 提供8个字符作为DES密钥(程序自动截取前8个字符)
    private static string key = "zhifeiya@foxmail.com";

    /// <summary>
    /// DES对称加密解密的密钥
    /// </summary>
    public static string Key
    {
        get
        {
            return key;
        }
        set
        {
            key = value;
        }
    }

    /// <summary>
    /// MD5 加密(不可逆加密)
    /// </summary>
    /// <param name="pass">要加密的原始字串</param>
    /// <returns></returns>
    public static string MD5Encrypt(string pass)
    {
        System.Security.Cryptography.MD5 md5 = new System.Security.Cryptography.MD5CryptoServiceProvider();
        byte[] bytResult = md5.ComputeHash(System.Text.Encoding.UTF8.GetBytes(pass));
        md5.Clear();
        string strResult = BitConverter.ToString(bytResult);
        strResult = strResult.Replace("-", "");
        return strResult;
        /* 另一种方法
        pass = FormsAuthentication.HashPasswordForStoringInConfigFile(pass, "MD5");
        return pass;
        */
    }

    /// <summary>
    /// SHA1 加密(不可逆加密)
    /// </summary>
    /// <param name="pass">要加密的原始字串</param>
    /// <returns></returns>
    public static string SHA1Encrypt(string pass)
    {
        System.Security.Cryptography.SHA1 sha1 = new System.Security.Cryptography.SHA1CryptoServiceProvider();
        byte[] bytResult = sha1.ComputeHash(System.Text.Encoding.UTF8.GetBytes(pass));
        sha1.Clear();
        string strResult = BitConverter.ToString(bytResult);
        strResult = strResult.Replace("-", "");
        return strResult;
        /* 另一种方法
        pass = FormsAuthentication.HashPasswordForStoringInConfigFile(pass, "SHA1");
        return pass;
        */
    }

    /// <summary>
    /// DES加密字符串
    /// </summary>
    /// <param name="encryptString">待加密的字符串</param>
    /// <returns>加密成功返回加密后的字符串,失败返回源串</returns>
    public static string DESEncrypt(string encryptString)
    {
        try
        {
            byte[] rgbKey = Encoding.UTF8.GetBytes(key.Substring(0, 8));
            byte[] rgbIV = rgbKey;
            byte[] inputByteArray = Encoding.UTF8.GetBytes(encryptString);
            DESCryptoServiceProvider dCSP = new DESCryptoServiceProvider();
            MemoryStream mStream = new MemoryStream();
            CryptoStream cStream = new CryptoStream(mStream, dCSP.CreateEncryptor(rgbKey, rgbIV), CryptoStreamMode.Write);
            cStream.Write(inputByteArray, 0, inputByteArray.Length);
            cStream.FlushFinalBlock();
            cStream.Close();
            return Convert.ToBase64String(mStream.ToArray());
        }
        catch
        {
            return encryptString;
        }
    }

    /// <summary>
    /// DES解密字符串
    /// </summary>
    /// <param name="decryptString">待解密的字符串</param>
    /// <returns>解密成功返回解密后的字符串,失败返源串</returns>
    public static string DESDecrypt(string decryptString)
    {
        try
        {
            byte[] rgbKey = Encoding.UTF8.GetBytes(key.Substring(0, 8));
            byte[] rgbIV = rgbKey;
            byte[] inputByteArray = Convert.FromBase64String(decryptString);
            DESCryptoServiceProvider DCSP = new DESCryptoServiceProvider();
            MemoryStream mStream = new MemoryStream();
            CryptoStream cStream = new CryptoStream(mStream, DCSP.CreateDecryptor(rgbKey, rgbIV), CryptoStreamMode.Write);
            cStream.Write(inputByteArray, 0, inputByteArray.Length);
            cStream.FlushFinalBlock();
            cStream.Close();
            return Encoding.UTF8.GetString(mStream.ToArray());
        }
        catch
        {
            return decryptString;
        }
    }

    /// <summary>
    /// 将普通字符串编码为BASE64字串
    /// </summary>
    /// <param name="str">源字符串</param>
    /// <returns></returns>
    public static string Base64Encode(string str)
    {
        return Convert.ToBase64String(Encoding.UTF8.GetBytes(str));
    }

    /// <summary>
    /// 解码BASE64字串
    /// </summary>
    /// <param name="str">Base64字串</param>
    /// <returns></returns>
    public static string Base64Decode(string base64Str)
    {
        return Encoding.UTF8.GetString(Convert.FromBase64String(base64Str));
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值