MD5、SHA256、SHA512加密算法,以及可逆算法
来源:互联网 发布:苏州爱知科技生产什么 编辑:程序博客网 时间:2024/05/16 13:02
using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.UI;using System.Web.UI.WebControls;using System.Security.Cryptography;using System.Text;
public static string GetMD5Password(string password){ MD5CryptoServiceProvider crypto = new MD5CryptoServiceProvider(); byte[] bytes = Encoding.UTF7.GetBytes(password); bytes = crypto.ComputeHash(bytes); StringBuilder sb = new StringBuilder(); foreach (byte num in bytes) { sb.AppendFormat("{0:x2}", num); } return sb.ToString();}public static string GetSHA512Password(string password){ byte[] bytes = Encoding.UTF7.GetBytes(password); byte[] result; SHA512 shaM = new SHA512Managed(); result = shaM.ComputeHash(bytes); StringBuilder sb = new StringBuilder(); foreach (byte num in result) { sb.AppendFormat("{0:x2}", num); } return sb.ToString();}
<pre class="csharp" name="code"> private static string HashString256(string stringToHash, string hachKey) { UTF8Encoding myEncoder = new UTF8Encoding(); byte[] key = myEncoder.GetBytes(hachKey); byte[] text = myEncoder.GetBytes(stringToHash); System.Security.Cryptography.HMACSHA256 myHMACSHA256 = new System.Security.Cryptography.HMACSHA256(key); byte[] hashCode = myHMACSHA256.ComputeHash(text); string hash = BitConverter.ToString(hashCode).Replace("-", ""); return hash.ToLower(); }
//百度的MD5加密,与上面不太一样public static string MD5(string password){ byte[] textBytes = System.Text.Encoding.Default.GetBytes(password); try { System.Security.Cryptography.MD5CryptoServiceProvider cryptHandler; cryptHandler = new System.Security.Cryptography.MD5CryptoServiceProvider(); byte[] hash = cryptHandler.ComputeHash(textBytes); string ret = ""; foreach (byte a in hash) { if (a < 16) ret += "0" + a.ToString("x"); else ret += a.ToString("x"); } return ret; } catch { throw; }}
注:MD5生成32位的密码
SHA512生成128的密码
SHA256生成64的密码
可逆的加密码算法:产生的密码位数由密码本身长度决定
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Security.Cryptography;using System.IO;namespace GlacierV2.Common{ public static class Global { private static int _newDBPrimaryKeySeed = 0; #region 加密和解密算法 private static SymmetricAlgorithm mobjCryptoService = new RijndaelManaged(); /// <summary> /// 获得密钥 /// </summary> /// <returns>密钥</returns> private static byte[] GetLegalKey() { string sTemp = "xfsdfgsfgsdgsdfgsdfg"; mobjCryptoService.GenerateKey(); byte[] bytTemp = mobjCryptoService.Key; int KeyLength = bytTemp.Length; if (sTemp.Length > KeyLength) sTemp = sTemp.Substring(0, KeyLength); else if (sTemp.Length < KeyLength) sTemp = sTemp.PadRight(KeyLength, ' '); return ASCIIEncoding.ASCII.GetBytes(sTemp); } /// <summary> /// 获得初始向量IV /// </summary> /// <returns>初试向量IV</returns> private static byte[] GetLegalIV() { string sTemp = "swetwerehetyeryertyerty"; mobjCryptoService.GenerateIV(); byte[] bytTemp = mobjCryptoService.IV; int IVLength = bytTemp.Length; if (sTemp.Length > IVLength) sTemp = sTemp.Substring(0, IVLength); else if (sTemp.Length < IVLength) sTemp = sTemp.PadRight(IVLength, ' '); return ASCIIEncoding.ASCII.GetBytes(sTemp); } /// <summary> /// 加密方法 /// </summary> /// <param name="Source">待加密的串</param> /// <returns>经过加密的串</returns> public static string Encrypto(string Source) { byte[] bytIn = UTF8Encoding.UTF8.GetBytes(Source); MemoryStream ms = new MemoryStream(); mobjCryptoService.Key = GetLegalKey(); mobjCryptoService.IV = GetLegalIV(); ICryptoTransform encrypto = mobjCryptoService.CreateEncryptor(); CryptoStream cs = new CryptoStream(ms, encrypto, CryptoStreamMode.Write); cs.Write(bytIn, 0, bytIn.Length); cs.FlushFinalBlock(); ms.Close(); byte[] bytOut = ms.ToArray(); return Convert.ToBase64String(bytOut); } /// <summary> /// 解密方法 /// </summary> /// <param name="Source">待解密的串</param> /// <returns>经过解密的串</returns> public static string Decrypto(string Source) { byte[] bytIn = Convert.FromBase64String(Source); MemoryStream ms = new MemoryStream(bytIn, 0, bytIn.Length); mobjCryptoService.Key = GetLegalKey(); mobjCryptoService.IV = GetLegalIV(); ICryptoTransform encrypto = mobjCryptoService.CreateDecryptor(); CryptoStream cs = new CryptoStream(ms, encrypto, CryptoStreamMode.Read); StreamReader sr = new StreamReader(cs); return sr.ReadToEnd(); } #endregion }}
- MD5、SHA256、SHA512加密算法,以及可逆算法
- MD5, SHA256, SHA512哈希算法
- c# 实现MD5,SHA1,SHA256,SHA512等常用加密算法
- c# 实现MD5,SHA1,SHA256,SHA512等常用加密算法
- c# 实现MD5,SHA1,SHA256,SHA512等常用加密算法
- c# 实现MD5,SHA1,SHA256,SHA512等常用加密算法
- C语言实现MD5/SHA1/SHA256/SHA512
- 不可逆加密算法(MD5)
- iOS加密算法(DES、AES、MD5、SHA512、Base64)
- MD5, SHA1, SHA256 and SHA512 Hash Algorithm Functions in C#
- Windows store app Hash(MD5/SHA1/SHA256/SHA384/SHA512)
- ios开发——Objective-c的SHA224/SHA256/SHA384/SHA512加密算法的实现
- iOS开发之Objective-c的SHA224/SHA256/SHA384/SHA512加密算法的实现
- iOS开发之Objective-c的SHA224/SHA256/SHA384/SHA512加密算法的实现
- 完整加密类(提供MD5,SHA1,SHA256,SHA512,DES加密和解密)
- [VB.Net]MD5/MD160/SHA1/SHA256/SHA384/SHA512/Base64-Encode/Base64-Decode
- 如何利用openssl来计算md4, md5, sha1, sha256, sha384, sha512等常用哈希值?
- 用OpenSSL 做HMAC(sha512/sha256/sha1/md5/sha224/sha384/sha/md2)
- ArcGIS for Android地图控件的5大常见操作(转自 ArcGIS_Mobile)
- Android NDK+JNI开发环境搭建
- Visual Studio 2010 下配置 OpenCV2.4.2
- ubuntu nginx配置HTTP Authentication
- IOCP模型与网络编程
- MD5、SHA256、SHA512加密算法,以及可逆算法
- 别的程序员是怎么读你的简历的
- linux内核源代码情景分析
- Poj 1236 (scc- Kosaraju算法实现)
- Delphi 文件操作
- JS 取得月份的天数
- android input 命令小结
- UITextView详解
- 在Wireshark工具中加入lua脚本