123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167 |
- using System;
- using System.Collections.Generic;
- using System.IO;
- using System.Linq;
- using System.Security.Cryptography;
- using System.Text;
- namespace NXWMS.Client.Code.Security
- {
- /// <summary>
- /// 加密算法类
- /// </summary>
- public static class SecurityCryptography
- {
- #region Base64加密解密
- /// <summary>
- /// Base64加密
- /// </summary>
- /// <param name="input">需要加密的字符串</param>
- /// <returns></returns>
- public static string Base64Encrypt(string input)
- {
- return Base64Encrypt(input, new UTF8Encoding());
- }
- /// <summary>
- /// Base64加密
- /// </summary>
- /// <param name="input">需要加密的字符串</param>
- /// <param name="encode">字符编码</param>
- /// <returns></returns>
- public static string Base64Encrypt(string input, Encoding encode)
- {
- return Convert.ToBase64String(encode.GetBytes(input));
- }
- /// <summary>
- /// Base64解密
- /// </summary>
- /// <param name="input">需要解密的字符串</param>
- /// <returns></returns>
- public static string Base64Decrypt(string input)
- {
- return Base64Decrypt(input, new UTF8Encoding());
- }
- /// <summary>
- /// Base64解密
- /// </summary>
- /// <param name="input">需要解密的字符串</param>
- /// <param name="encode">字符的编码</param>
- /// <returns></returns>
- public static string Base64Decrypt(string input, Encoding encode)
- {
- return encode.GetString(Convert.FromBase64String(input));
- }
- #endregion
- #region MD5 HASH算法
- /// <summary>
- /// MD5 HASH算法
- /// </summary>
- /// <param name="input"></param>
- /// <returns></returns>
- public static string GetMd5Hash(string input)
- {
- if (input == null)
- {
- return null;
- }
- MD5 md5Hash = MD5.Create();
- // 将输入字符串转换为字节数组并计算哈希数据
- byte[] data = md5Hash.ComputeHash(Encoding.UTF8.GetBytes(input));
- // 创建一个 Stringbuilder 来收集字节并创建字符串
- StringBuilder sBuilder = new StringBuilder();
- // 循环遍历哈希数据的每一个字节并格式化为十六进制字符串
- for (int i = 0; i < data.Length; i++)
- {
- sBuilder.Append(data[i].ToString("x2"));
- }
- // 返回十六进制字符串
- return sBuilder.ToString();
- }
- #endregion
- #region SHA1加密的字符串
- /// <summary>
- /// SHA1加密的字符串
- /// </summary>
- /// <param name="input"></param>
- /// <returns></returns>
- public static string GetSHA1(String input)
- {
- SHA1CryptoServiceProvider sha1 = new SHA1CryptoServiceProvider();
- byte[] str1 = Encoding.UTF8.GetBytes(input);
- byte[] str2 = sha1.ComputeHash(str1);
- sha1.Clear();
- (sha1 as IDisposable).Dispose();
- return Convert.ToBase64String(str2);
- }
- #endregion
- #region DES加密
- /// <summary>
- /// DES加密
- /// </summary>
- /// <param name="data">加密数据</param>
- /// <param name="key">8位字符的密钥字符串</param>
- /// <param name="iv">8位字符的初始化向量字符串</param>
- /// <returns></returns>
- public static string DESEncrypt(string data, string key = "thuman..", string iv = "thuman..")
- {
- byte[] byKey = System.Text.ASCIIEncoding.ASCII.GetBytes(key);
- byte[] byIV = System.Text.ASCIIEncoding.ASCII.GetBytes(iv);
- 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(data);
- sw.Flush();
- cst.FlushFinalBlock();
- sw.Flush();
- return Convert.ToBase64String(ms.GetBuffer(), 0, (int)ms.Length);
- }
- #endregion
- #region DES解密
- /// <summary>
- /// DES解密
- /// </summary>
- /// <param name="data">解密数据</param>
- /// <param name="key">8位字符的密钥字符串(需要和加密时相同)</param>
- /// <param name="iv">8位字符的初始化向量字符串(需要和加密时相同)</param>
- /// <returns></returns>
- public static string DESDecrypt(string data, string key = "thuman..", string iv = "thuman..")
- {
- byte[] byKey = System.Text.ASCIIEncoding.ASCII.GetBytes(key);
- byte[] byIV = System.Text.ASCIIEncoding.ASCII.GetBytes(iv);
- byte[] byEnc;
- try
- {
- byEnc = Convert.FromBase64String(data);
- }
- catch
- {
- return null;
- }
- 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();
- }
- #endregion
- }
- }
|