工作常用加密整理
来源:互联网 发布:写频软件 编辑:程序博客网 时间:2024/06/07 00:48
MD5加密
public static string Md5Encrypt(string sourceString,Encoding enc = null) { if(enc==null) enc=Encoding.UTF8; var buffer = MD5.Create().ComputeHash(enc.GetBytes(sourceString)); var builder = new StringBuilder(); foreach(var t in buffer) { builder.Append(t.ToString("x").PadLeft(2,'0')); } return builder.ToString(); }
RAS 加密
public static string RSAEncrypt(string publickey, string content) { using (RSACryptoServiceProvider RSACryptography = new RSACryptoServiceProvider()) { try { Byte[] PlaintextData = Encoding.UTF8.GetBytes(content); RSACryptography.FromXmlString(publickey); int MaxBlockSize = RSACryptography.KeySize / 8 - 11; //加密块最大长度限制 if (PlaintextData.Length <= MaxBlockSize) return Convert.ToBase64String(RSACryptography.Encrypt(PlaintextData, false)); using (MemoryStream PlaiStream = new MemoryStream(PlaintextData)) using (MemoryStream CrypStream = new MemoryStream()) { Byte[] Buffer = new Byte[MaxBlockSize]; int BlockSize = PlaiStream.Read(Buffer, 0, MaxBlockSize); while (BlockSize > 0) { Byte[] ToEncrypt = new Byte[BlockSize]; Array.Copy(Buffer, 0, ToEncrypt, 0, BlockSize); Byte[] Cryptograph = RSACryptography.Encrypt(ToEncrypt, false); CrypStream.Write(Cryptograph, 0, Cryptograph.Length); BlockSize = PlaiStream.Read(Buffer, 0, MaxBlockSize); } return Convert.ToBase64String(CrypStream.ToArray(), Base64FormattingOptions.None); } } catch (Exception e) { return ""; } } } //C#的RSA私钥签名代码如: public static string RSASignData(string privatekey, string content) { RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(); byte[] cipherbytes; rsa.FromXmlString(privatekey); cipherbytes = rsa.SignData(Encoding.UTF8.GetBytes(content), "SHA1"); return Convert.ToBase64String(cipherbytes); } //C#的RSA公钥验证代码如: public static bool RSAVerifyData(string publickey, string content, string sign) { RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(); rsa.FromXmlString(publickey); return rsa.VerifyData(Encoding.UTF8.GetBytes(content), "SHA1", Convert.FromBase64String(sign)); }
Base64Encrypt
public static string Base64Encrypt(string input) { return Base64Encrypt(input, Encoding.UTF8); } public static string Base64Encrypt(string input, Encoding encode) { return Convert.ToBase64String(encode.GetBytes(input)); }
/// <summary> /// Aes加密 /// </summary> /// <param name="source">源字符串</param> /// <param name="key">aes密钥,长度必须32位</param> /// <returns>加密后的字符串</returns> public static string EncryptAes(string source, string key) { using (AesCryptoServiceProvider aesProvider = new AesCryptoServiceProvider()) { aesProvider.Key = GetAesKey(key); aesProvider.Mode = CipherMode.ECB; aesProvider.Padding = PaddingMode.PKCS7; using (ICryptoTransform cryptoTransform = aesProvider.CreateEncryptor()) { byte[] inputBuffers = Encoding.UTF8.GetBytes(source); byte[] results = cryptoTransform.TransformFinalBlock(inputBuffers, 0, inputBuffers.Length); aesProvider.Clear(); aesProvider.Dispose(); return Convert.ToBase64String(results, 0, results.Length); } } } /// <summary> /// Aes解密 /// </summary> /// <param name="source">源字符串</param> /// <param name="key">aes密钥,长度必须32位</param> /// <returns>解密后的字符串</returns> public static string DecryptAes(string source, string key) { using (AesCryptoServiceProvider aesProvider = new AesCryptoServiceProvider()) { aesProvider.Key = GetAesKey(key); aesProvider.Mode = CipherMode.ECB; aesProvider.Padding = PaddingMode.ISO10126; using (ICryptoTransform cryptoTransform = aesProvider.CreateDecryptor()) { byte[] inputBuffers = Convert.FromBase64String(source); byte[] results = cryptoTransform.TransformFinalBlock(inputBuffers, 0, inputBuffers.Length); aesProvider.Clear(); return Encoding.UTF8.GetString(results); } } } static byte[] GetAesKey(string key) { if (string.IsNullOrEmpty(key)) { throw new ArgumentNullException("key", "Aes密钥不能为空"); } //if (key.Length < 32) // { // 不足32补全 // key = key.PadRight(32, '0'); //} // if (key.Length > 32) // { // key = key.Substring(0, 32); //} return Encoding.UTF8.GetBytes(key); }
DES3加解密
/// <summary> /// DES3加密 /// </summary> /// <param name="input"></param> /// <param name="key"></param> /// <returns></returns> public static string Des3Encrypt(string input, string key) { var des = new TripleDESCryptoServiceProvider { Key = Encoding.ASCII.GetBytes(key), Mode = CipherMode.CBC, Padding = PaddingMode.PKCS7 }; var desEncrypt = des.CreateEncryptor(); var buffer = Encoding.ASCII.GetBytes(input); return Convert.ToBase64String(desEncrypt.TransformFinalBlock(buffer, 0, buffer.Length)); } /// <summary> /// DES3解密 /// </summary> /// <param name="input"></param> /// <param name="key"></param> /// <returns></returns> public static string Des3Decrypt(string input, string key) { var des = new TripleDESCryptoServiceProvider { Key = Encoding.ASCII.GetBytes(key), Mode = CipherMode.CBC, Padding = PaddingMode.PKCS7 }; var desDecrypt = des.CreateDecryptor(); var buffer = Convert.FromBase64String(input); var result = Encoding.ASCII.GetString(desDecrypt.TransformFinalBlock(buffer, 0, buffer.Length)); return result; }SHA1加密
public static string SHA1_Encrypt(string Source_String) { byte[] strRes = Encoding.Default.GetBytes(Source_String); HashAlgorithm iSha = new SHA1CryptoServiceProvider(); strRes = iSha.ComputeHash(strRes); StringBuilder enText = new StringBuilder(); foreach (byte iByte in strRes) { enText.AppendFormat("{0:x2}", iByte); } return enText.ToString(); }
#region DES加密解密 /// <summary> /// DES加密 /// </summary> /// <param name="input">加密数据</param> /// <param name="key">8位字符的密钥字符串</param> /// <param name="iv">8位字符的初始化向量字符串</param> /// <returns></returns> public static string DesEncrypt(string input, string key, string iv) { var byKey = Encoding.ASCII.GetBytes(key); var byIv = Encoding.ASCII.GetBytes(iv); var cryptoProvider = new DESCryptoServiceProvider(); using (var ms = new MemoryStream()) { using (var cst = new CryptoStream(ms, cryptoProvider.CreateEncryptor(byKey, byIv), CryptoStreamMode.Write)) { using (var sw = new StreamWriter(cst)) { sw.Write(input); sw.Flush(); cst.FlushFinalBlock(); return Convert.ToBase64String(ms.GetBuffer(), 0, (int)ms.Length); } } } } /// <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, string iv) { var byKey = Encoding.ASCII.GetBytes(key); var byIv = Encoding.ASCII.GetBytes(iv); var byEnc = Convert.FromBase64String(data); var cryptoProvider = new DESCryptoServiceProvider(); using (var ms = new MemoryStream(byEnc)) { using (var cst = new CryptoStream(ms, cryptoProvider.CreateDecryptor(byKey, byIv), CryptoStreamMode.Read)) { using (var sr = new StreamReader(cst)) { return sr.ReadToEnd(); } } } } #endregion
阅读全文
0 0
- 工作常用加密整理
- 工作中常用的linux操作整理
- 加密整理
- 常用ASP代码加密工具的工作原理
- 工作需要,整理win系统常用组件和依赖
- IOS工作笔记1年,收集整理,常用方法
- 工作中jQuery常用实例-主要功能总结整理
- 工作整理
- 常用加密
- MD5加密整理
- MD5加密整理
- DES 加密/解密整理
- 数据加密简介(整理)
- 加密解密整理
- 加密解密整理
- 加密整理笔记
- C#加密整理
- 数据加密 整理
- DEM、TIN与栅格之间的关系
- 树莓派系统安装和调试
- 变形课 hdu1181 (深搜题)
- P1201 [USACO1.1]贪婪的送礼者Greedy Gift Givers
- SAP MD04详解
- 工作常用加密整理
- spring boot 学习笔记(一)
- xmllistModel无法解析正确路径的xml
- 条码规范——EAN13
- P1202 黑色星期五
- unity使用苹果ARKit-01:Unity-ARKit-Plugin unity使用苹果ARKit
- Springmvc 后台接受String[] 问题
- URL “#”、”?”、"&“作用 详解
- Lintcode——排序专题总结