[C#] 常用工具类——加密解密类

using System;
using System.Configuration;
using System.Collections.Generic;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.Security;
using System.Drawing;
using System.Drawing.Imaging;
using System.Drawing.Drawing2D;
using System.IO;
using System.Security.Cryptography;

namespace Utils
{
    /// <summary>
    /// <para> </para>
    ///  常用工具类——加密解密类
    /// <para> -------------------------------------------------</para>
    /// <para> StringEncode:返回 HTML 字符串的编码结果</para>
    /// <para> StringDecode:返回 HTML 字符串的解码结果</para>
    /// <para> UrlEncode:返回 URL 字符串的编码结果</para>
    /// <para> UrlDecode:返回 URL 字符串的解码结果</para>
    /// <para> DESEncrypt:DES加密</para>
    /// <para> DESDecrypt:DES解密</para>
    /// <para> MD5:MD5函数</para>
    /// <para> SHA256:SHA256函数</para>
    /// </summary>
    public class EncyptHelper
    {
        /// <summary>
        /// 32位Key值:
        /// </summary>
        public static byte[] DESKey = new byte[] { 0x03, 0x0B, 0x13, 0x1B, 0x23, 0x2B, 0x33, 0x3B, 0x43, 0x4B, 0x9B, 0x93, 0x8B, 0x83, 0x7B, 0x73, 0x6B, 0x63, 0x5B, 0x53, 0xF3, 0xFB, 0xA3, 0xAB, 0xB3, 0xBB, 0xC3, 0xEB, 0xE3, 0xDB, 0xD3, 0xCB };

        #region 返回 HTML 字符串的编码结果
        /// <summary>
        /// 返回 HTML 字符串的编码结果
        /// </summary>
        /// <param name="str">字符串</param>
        /// <returns>编码结果</returns>
        public static string StringEncode(string str)
        {
            return HttpUtility.HtmlEncode(str);
        }
        #endregion

        #region 返回 HTML 字符串的解码结果
        /// <summary>
        /// 返回 HTML 字符串的解码结果
        /// </summary>
        /// <param name="str">字符串</param>
        /// <returns>解码结果</returns>
        public static string StringDecode(string str)
        {
            return HttpUtility.HtmlDecode(str);
        }
        #endregion

        #region 返回 URL 字符串的编码结果
        /// <summary>
        /// 返回 URL 字符串的编码结果
        /// </summary>
        /// <param name="str">字符串</param>
        /// <returns>编码结果</returns>
        public static string UrlEncode(string str)
        {
            return HttpUtility.UrlEncode(str);
        }
        #endregion

        #region 返回 URL 字符串的解码结果
        /// <summary>
        /// 返回 URL 字符串的解码结果
        /// </summary>
        /// <param name="str">字符串</param>
        /// <returns>解码结果</returns>
        public static string UrlDecode(string str)
        {
            return HttpUtility.UrlDecode(str);
        }
        #endregion

        #region DES加密
        /// <summary>
        /// DES加密
        /// </summary>
        /// <param name="strSource">待加密字串</param>
        /// <returns>加密后的字符串</returns>
        public static string DESEncrypt(string strSource)
        {
            return DESEncrypt(strSource, DESKey);
        }
        /// <summary>
        /// DES加密
        /// </summary>
        /// <param name="strSource">待加密字串</param>
        /// <param name="key">Key值</param>
        /// <returns>加密后的字符串</returns>
        public static string DESEncrypt(string strSource, byte[] key)
        {
            SymmetricAlgorithm sa = Rijndael.Create();
            sa.Key = key;
            sa.Mode = CipherMode.ECB;
            sa.Padding = PaddingMode.Zeros;
            MemoryStream ms = new MemoryStream();
            CryptoStream cs = new CryptoStream(ms, sa.CreateEncryptor(), CryptoStreamMode.Write);
            byte[] byt = Encoding.Unicode.GetBytes(strSource);
            cs.Write(byt, 0, byt.Length);
            cs.FlushFinalBlock();
            cs.Close();
            return Convert.ToBase64String(ms.ToArray());
        }
        #endregion

        #region DES解密
        /// <summary>
        /// DES解密
        /// </summary>
        /// <param name="strSource">待解密的字串</param>
        /// <returns>解密后的字符串</returns>
        public static string DESDecrypt(string strSource)
        {
            return DESDecrypt(strSource, DESKey);
        }
        /// <summary>
        /// DES解密
        /// </summary>
        /// <param name="strSource">待解密的字串</param>
        /// <param name="key">32位Key值</param>
        /// <returns>解密后的字符串</returns>
        public static string DESDecrypt(string strSource, byte[] key)
        {
            SymmetricAlgorithm sa = Rijndael.Create();
            sa.Key = key;
            sa.Mode = CipherMode.ECB;
            sa.Padding = PaddingMode.Zeros;
            ICryptoTransform ct = sa.CreateDecryptor();
            byte[] byt = Convert.FromBase64String(strSource);
            MemoryStream ms = new MemoryStream(byt);
            CryptoStream cs = new CryptoStream(ms, ct, CryptoStreamMode.Read);
            StreamReader sr = new StreamReader(cs, Encoding.Unicode);
            return sr.ReadToEnd();
        }
        #endregion        

        #region MD5函数
        /// <summary>
        /// MD5函数,需引用:using System.Security.Cryptography;
        /// </summary>
        /// <param name="str">原始字符串</param>
        /// <returns>MD5结果</returns>
        public static string MD5(string str)
        {
            byte[] b = Encoding.Default.GetBytes(str);
            b = new MD5CryptoServiceProvider().ComputeHash(b);
            string ret = "";
            for (int i = 0; i < b.Length; i++)
                ret += b[i].ToString("x").PadLeft(2, '0');
            return ret;
        }
        #endregion

        #region SHA256函数
        /// <summary>
        /// SHA256函数
        /// </summary>
        /// /// <param name="str">原始字符串</param>
        /// <returns>SHA256结果</returns>
        public static string SHA256(string str)
        {
            byte[] SHA256Data = Encoding.UTF8.GetBytes(str);
            SHA256Managed Sha256 = new SHA256Managed();
            byte[] Result = Sha256.ComputeHash(SHA256Data);
            return Convert.ToBase64String(Result);  //返回长度为44字节的字符串
        }
        #endregion
    }
}

  

时间: 2024-10-23 16:33:25

[C#] 常用工具类——加密解密类的相关文章

PHP加密解密类实例分析

  这篇文章主要介绍了PHP加密解密类,实例分析了php实现加密与解密的原理与相关技巧,非常具有实用价值,需要的朋友可以参考下 本文实例讲述了PHP加密解密类.分享给大家供大家参考.具体分析如下: 这段代码支持 数组加密 , 密文有效期, 各种对称加密 其中参数如下: * @use ption::en($string, $key); * @param String $string 需要加密的字串 * @param String $skey 密钥 * @param int $expiry 密文有效

基于php实现的php代码加密解密类完整实例_php技巧

本文实例讲述了基于php实现的php代码加密解密类.分享给大家供大家参考,具体如下: php 代码加密类,大家可以根据自己的需求进行修改,原类如下,该实例在ubuntu下测试没有问题. <?php class Encryption{ private $c='';//存储密文 private $s='',$q1,$q2,$q3,$q4,$q5,$q6;//存储生成的加密后的文件内容 //如果不设置一个值,isset会表示不存在: private $file='';//读取文件的路径 private

PHP加密解密类实例分析_php技巧

本文实例讲述了PHP加密解密类.分享给大家供大家参考.具体分析如下: 这段代码支持 数组加密 , 密文有效期, 各种对称加密 其中参数如下: * @use ption::en($string, $key); * @param String $string 需要加密的字串 * @param String $skey 密钥 * @param int $expiry 密文有效期, 加密时候有效, 单位 秒,0 为永久有效 * @return String 1. php代码如下: /* * -工具库-加

一个PHP针对数字的加密解密类

 这篇文章主要介绍了一个PHP针对数字的加密解密类,该类仅支持加密数字.比较适用于数据库中id字段的加密解密,以及根据数字显示url的加密,需要的朋友可以参考下 代码如下: <?php /**  * 加密解密类  * 该算法仅支持加密数字.比较适用于数据库中id字段的加密解密,以及根据数字显示url的加密.  * @author 深秋的竹子  * @version alpha  * @加密原则 标记长度 + 补位 + 数字替换  * @加密步骤:  * 将a-z,A-Z,0-9 62个字符打乱,

Java实现MD5加密解密类

首先说明一下系统自带的MD5加密:           public final static String MD5(String s) {       char hexDigits[]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};              try {           byte[] btInput = s.getBytes();           // 获得MD5摘要算法的 Messa

一个PHP针对数字的加密解密类_php实例

复制代码 代码如下: <?php/** * 加密解密类 * 该算法仅支持加密数字.比较适用于数据库中id字段的加密解密,以及根据数字显示url的加密. * @author 深秋的竹子 * @version alpha * @加密原则 标记长度 + 补位 + 数字替换 * @加密步骤: * 将a-z,A-Z,0-9 62个字符打乱,取前M(数字最大的位数)位作为 标记长度字符串,取第M+1 到第M+10位为数字替换字符串,剩余的为补位字符串 * 1.计算数字长度n,取乱码的第n位作为标记长度. *

PHP实现加强版加密解密类实例_php技巧

本文实例讲述了PHP实现加强版加密解密类.分享给大家供大家参考.具体如下: <?php class Ender{ private $enkey;//加密解密用的密钥 private $rep_char='#'; //替换加密后的base64字符串中的=,因为=在有些场合是禁止使用的, //这里可以用一个允许的字符作为替换. //构造参数是密钥 public function __construct($key=''){ if(!$key){ $this->enkey=$key; } } //设置

DES加密解密类

1 /// <summary> 2 /// DES加密/解密类. 3 /// </summary> 4 public class HXEncrypt 5 { 6 public HXEncrypt() 7 { 8 } 9 10 #region DES加密 11 12 13 #region ========加密======== 14 15 /// <summary> 16 /// 加密 17 /// </summary> 18 /// <param nam

java常用工具类之DES和Base64加密解密类_java

一.DES加密和解密 package com.itjh.javaUtil; import java.io.UnsupportedEncodingException; import java.security.InvalidKeyException; import java.security.NoSuchAlgorithmException; import java.security.SecureRandom; import java.security.spec.InvalidKeySpecExc