• 加密工具类


    public class EncryptAndDecrypt
    {
    #region MD5 加密【不可逆加密】

    #region MD5 使用
    /// <summary>
    /// 前缀
    /// </summary>
    private static readonly string Prefix = "kiam";

    /// <summary>
    /// 后缀
    /// </summary>
    private static readonly string Suffix = "kiam";

    /// <summary>
    /// 给输入字符串 添加 指定的前缀和后缀【防止被破解】
    /// </summary>
    /// <param name="input"></param>
    /// <returns></returns>
    private static string AddFix(string input)
    {
    return Prefix + input + Suffix;
    }
    #endregion

    /// <summary>
    /// 使用MD5加密 得到32位长度的字符
    /// </summary>
    /// <param name="input"> 待加密的字符串</param>
    /// <returns></returns>
    public static string EncryptMD5(string input)
    {
    // MD5 md5 =new MD5CryptoServiceProvider();
    MD5 md = MD5.Create();
    //给输入字符串 添加 指定的前缀和后缀【防止被破解】
    input = AddFix(input);
    //按照 UTF-8的格式,把字符串 变成 字节数组
    byte[] bytes = Encoding.UTF8.GetBytes(input);
    // 是MD5中的 ComputeHash 方法,把字节数据转换成 固定长度的 字节数组
    byte[] enBytes = md.ComputeHash(bytes);
    //通过BitConverter 把得到的 字节数据,转换成 字符串
    string result = BitConverter.ToString(enBytes);
    md.Dispose();
    return result.Replace("-", "");
    }

    /// <summary>
    /// 使用MD5加密 得到16位长度的字符
    /// </summary>
    /// <param name="input">待加密的字符串</param>
    /// <returns></returns>
    public static string EncryptMD5Byte16(string input)
    {
    // MD5 md5 =new MD5CryptoServiceProvider();
    MD5 md = MD5.Create();
    //给输入字符串 添加 指定的前缀和后缀【防止被破解】
    input = AddFix(input);
    byte[] bytes = Encoding.UTF8.GetBytes(input);
    byte[] enBytes = md.ComputeHash(bytes);
    string result = BitConverter.ToString(enBytes, 4, 8);
    md.Dispose();
    return result.Replace("-", "");
    }
    #endregion
    #region SHA1加密【不可逆加密,没有解密】
    /// <summary>
    /// SHA1加密
    /// </summary>
    /// <param name="input"></param>
    /// <returns></returns>
    public static string EncryptBySHA1(string input)
    {
    SHA1 sha = new SHA1CryptoServiceProvider();
    input = AddFix(input);
    byte[] bytes = Encoding.Unicode.GetBytes(input);
    byte[] result = sha.ComputeHash(bytes);
    string output = BitConverter.ToString(result);
    return output.Replace("-", "");
    }
    #endregion
    #region Base64编码

    #region 编码
    /// <summary>
    /// 给字符串编码
    /// </summary>
    /// <param name="input">待编码的字符串</param>
    /// <returns></returns>
    public static string Base64Encoder(string input)
    {
    byte[] bytes = Encoding.UTF8.GetBytes(input);
    return Convert.ToBase64String(bytes);
    }
    #endregion

    #region 解码
    /// <summary>
    /// 解码
    /// </summary>
    /// <param name="input">待解码的 base64 字符串</param>
    /// <returns></returns>
    public static string Base64Decoder(string input)
    {
    byte[] bytes = Convert.FromBase64String(input); ;
    return Encoding.UTF8.GetString(bytes);
    }
    #endregion


    #endregion
    #region 对称加密【DES】
    /// <summary>
    /// 密钥
    /// </summary>
    private static readonly string _Key = "干翻反攻倒算发光法第三方噶水电费";
    /// <summary>
    /// 偏移量
    /// </summary>
    private static readonly string _Iv = "Java";


    /// <summary>
    /// DES 加密
    /// </summary>
    /// <param name="input"></param>
    /// <returns></returns>
    public static string EncryptString(string input)
    {

    //设置密钥[密钥的长度必须不大于8]
    string sKey = Base64Encoder(_Key);
    sKey = sKey.Length > 8 ? sKey.Substring(0, 8) : sKey;
    //设置偏离量
    string sIv = Base64Encoder(_Iv);
    byte[] data = Encoding.UTF8.GetBytes(input);
    using (DESCryptoServiceProvider des = new DESCryptoServiceProvider())
    {
    //设置密钥
    des.Key = ASCIIEncoding.ASCII.GetBytes(sKey);
    //设置偏移量
    des.IV = ASCIIEncoding.ASCII.GetBytes(sIv);

    ICryptoTransform desencrypt = des.CreateEncryptor();
    byte[] result = desencrypt.TransformFinalBlock(data, 0, data.Length);
    return Convert.ToBase64String(result);
    }
    }


    /// <summary>
    /// DES解密
    /// </summary>
    /// <param name="input"></param>
    /// <returns></returns>
    public static string DecryptString(string input)
    {
    //设置密钥
    string sKey = Base64Encoder(_Key);
    sKey = sKey.Length > 8 ? sKey.Substring(0, 8) : sKey;
    //设置偏离量
    string sIv = Base64Encoder(_Iv);
    try
    {
    byte[] inputByteArray = Convert.FromBase64String(input);
    DESCryptoServiceProvider des = new DESCryptoServiceProvider();
    des.Key = ASCIIEncoding.ASCII.GetBytes(sKey);
    des.IV = ASCIIEncoding.ASCII.GetBytes(sIv);
    ICryptoTransform desencrypt = des.CreateDecryptor();
    byte[] result = desencrypt.TransformFinalBlock(inputByteArray, 0, inputByteArray.Length);
    return Encoding.UTF8.GetString(result);
    }
    catch
    {
    return input;
    }
    }
    #endregion
    }

  • 相关阅读:
    paip.数据库全文检索 attilax总结
    软件网站安全性的设计与检测与解决方案
    防止SQL注入解决方案
    paip.账务系统的安全性
    快速开发字段很多的MIS表
    paip.php调试不能显示局部变量内容w/ xdebug
    程序安全性之配置文件安全
    paip.VS2010未能加载类型
    paip.盘古汉字转拼音组件库使用总结
    paip.跟踪DISCUZ积分日志功能总结
  • 原文地址:https://www.cnblogs.com/kiamer2425/p/7881980.html
Copyright © 2020-2023  润新知