zoukankan      html  css  js  c++  java
  • C#一个封装的加密解密类

    using System;
    using System.Text;
    using System.Globalization;
    using System.Security.Cryptography;
    using System.Windows.Forms;

    namespace Jh.Encrypts
    {
    public class JhEncrypt
    {
    /// <summary>
    /// 构造方法
    /// </summary>
    public JhEncrypt()
    {
    }
    /// <summary>
    /// 使用缺省密钥字符串加密
    /// </summary>
    /// <param name="original">明文</param>
    /// <returns>密文</returns>
    public static string Encrypt(string original)
    {
    return Encrypt(original,"JASONHEUNG");
    }
    /// <summary>
    /// 使用缺省密钥解密
    /// </summary>
    /// <param name="original">密文</param>
    /// <returns>明文</returns>
    public static string Decrypt(string original)
    {
    return Decrypt(original,"JASONHEUNG",System.Text.Encoding.Default);
    }
    /// <summary>
    /// 使用给定密钥解密
    /// </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>
    /// 使用缺省密钥解密,返回指定编码方式明文
    /// </summary>
    /// <param name="original">密文</param>
    /// <param name="encoding">编码方式</param>
    /// <returns>明文</returns>
    public static string Decrypt(string original,Encoding encoding)
    {
    return Decrypt(original,"JASONHEUNG",encoding);
    }
    /// <summary>
    /// 使用给定密钥加密
    /// </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>
    /// 使用给定密钥解密
    /// </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));
    }
    /// <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);
    }

    /// <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("JASONHEUNG");
    return Encrypt(original,key);
    }

    /// <summary>
    /// 使用缺省密钥解密数据
    /// </summary>
    /// <param name="encrypted">密文</param>
    /// <param name="key">密钥</param>
    /// <returns>明文</returns>
    public static byte[] Decrypt(byte[] encrypted)
    {
    byte[] key = System.Text.Encoding.Default.GetBytes("JASONHEUNG");
    return Decrypt(encrypted,key);
    }

    }
    }

  • 相关阅读:
    ffmpeg mp3转ogg的命令
    四个很好的开源app项目
    iOS 开发者必不可少的 75 个工具
    几点iOS开发技巧
    100 Most Influential Books According to Stack Overflow
    iOS图形处理和性能(转)
    Objc的底层并发API(转)
    GCD CoreData 简化CoreData操作(转)
    微信扫一扫背后的秘密:基于运动估计的智能传图算法(转)
    Objective-C 的 API 设计(转)
  • 原文地址:https://www.cnblogs.com/draeag/p/903945.html
Copyright © 2011-2022 走看看