zoukankan      html  css  js  c++  java
  • C# 常用加密方式

    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Security.Cryptography;
    using System.IO;

    namespace TRSLMS.Website.Common
    {
    /// <summary>
    /// MD5加密
    /// </summary>
    public class Encrypt
    {
    private static MD5 md5 = MD5.Create();
    //私有化构造函数
    private Encrypt() { }
    /// <summary>
    /// 使用utf8编码将字符串散列
    /// </summary>
    /// <param name="sourceString">加密字符串</param>
    /// <returns>返回加密后字符串不可解</returns>
    public static string SetEncryptMD5(string sourceString)
    {
    try
    {
    byte[] source = md5.ComputeHash(Encoding.UTF8.GetBytes(sourceString));
    StringBuilder sBuilder = new StringBuilder();
    for (int i = 0; i < source.Length; i++)
    {
    sBuilder.Append(source[i].ToString("x2"));
    }
    return sBuilder.ToString();
    }
    catch (Exception)
    {
    return "";
    }
    }

    //**********************************************************************
    //注意了,是8个字符,64位
    const string KEY_64 = "Loubyuan";
    const string IV_64 = "19920923";
    /// <summary>
    /// DES加密方式
    /// </summary>
    /// <param name="sourceString">加密字符串</param>
    /// <returns>加密后字符串</returns>
    public static string SetEncryptDES(string sourceString)
    {
    try
    {
    byte[] byKey = System.Text.ASCIIEncoding.ASCII.GetBytes(KEY_64);
    byte[] byIV = System.Text.ASCIIEncoding.ASCII.GetBytes(IV_64);
    DESCryptoServiceProvider cryptoProvider = new DESCryptoServiceProvider();
    int i = cryptoProvider.KeySize;
    MemoryStream ms = new MemoryStream();
    CryptoStream cst = new CryptoStream(ms, cryptoProvider.CreateEncryptor(byKey, byIV), CryptoStreamMode.Write);
    StreamWriter sw = new StreamWriter(cst);
    sw.Write(sourceString);
    sw.Flush();
    cst.FlushFinalBlock();
    sw.Flush();
    return Convert.ToBase64String(ms.GetBuffer(), 0, (int)ms.Length);
    }
    catch { return ""; }
    }


    /// <summary>
    /// DES解密
    /// </summary>
    /// <param name="sourceString">解密字符串</param>
    /// <returns>解密后字符串</returns>
    public static string GetDecryptDES(string sourceString)
    {
    try
    {
    byte[] byKey = System.Text.ASCIIEncoding.ASCII.GetBytes(KEY_64);
    byte[] byIV = System.Text.ASCIIEncoding.ASCII.GetBytes(IV_64);
    byte[] byEnc = Convert.FromBase64String(sourceString);
    DESCryptoServiceProvider cryptoProvider = new DESCryptoServiceProvider();
    MemoryStream ms = new MemoryStream(byEnc);
    CryptoStream cst = new CryptoStream(ms, cryptoProvider.CreateDecryptor(byKey, byIV), CryptoStreamMode.Read);
    StreamReader sr = new StreamReader(cst);
    return sr.ReadToEnd();
    }
    catch { return ""; }
    }

    //**********************************************************************
    static byte[] keyArray = UTF8Encoding.UTF8.GetBytes("be4L4D5d0ff2djm2fpqmvy8flahbde4h");

    /// <summary>
    /// AES 加密方式
    /// </summary>
    /// <param name="sourceString">加密字符串</param>
    /// <returns>加密后字符串</returns>
    public static string SetEncryptAES(string sourceString)
    {
    try
    {
    byte[] toEncryptArray = UTF8Encoding.UTF8.GetBytes(sourceString);
    RijndaelManaged rDel = new RijndaelManaged();
    rDel.Key = keyArray;
    rDel.Mode = CipherMode.ECB;
    rDel.Padding = PaddingMode.PKCS7;
    ICryptoTransform cTransform = rDel.CreateEncryptor();
    byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);
    return Convert.ToBase64String(resultArray, 0, resultArray.Length);
    }
    catch { return ""; }
    }

    /// <summary>
    /// AES解密
    /// </summary>
    /// <param name="sourceString">解密字符串</param>
    /// <returns>解密后字符串</returns>
    public static string GetDecryptAES(string sourceString)
    {
    try
    {
    byte[] toEncryptArray = Convert.FromBase64String(sourceString);
    RijndaelManaged rDel = new RijndaelManaged();
    rDel.Key = keyArray;
    rDel.Mode = CipherMode.ECB;
    rDel.Padding = PaddingMode.PKCS7;
    ICryptoTransform cTransform = rDel.CreateDecryptor();
    byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);
    return UTF8Encoding.UTF8.GetString(resultArray);
    }
    catch { return ""; }
    }

    }
    }

  • 相关阅读:
    值传递和引用传递(不是引用类型的传递)的区别
    字符串一旦定义,就表示开辟好了指定的空间,其内容就不可改变
    String类的直接赋值和构造方法赋值的区别
    字符串常量是String类的匿名对象
    Integer和int的区别(转)
    final的好处
    数组引用传递
    构造代码块
    ==和equals()的不同点
    Redis数据类型底层实现
  • 原文地址:https://www.cnblogs.com/louby/p/5212508.html
Copyright © 2011-2022 走看看