DotNet中几种常用的加密算法
发表于:2024-09-22 作者:千家信息网编辑
千家信息网最后更新 2024年09月22日,在.NET项目中,我们较多的使用到加密这个操作。因为在现代的项目中,对信息安全的要求越来越高,那么多信息的加密就变得至关重要。现在提供几种常用的加密/解密算法。1.用于文本和Base64编码文本的互相
千家信息网最后更新 2024年09月22日DotNet中几种常用的加密算法
在.NET项目中,我们较多的使用到加密这个操作。因为在现代的项目中,对信息安全的要求越来越高,那么多信息的加密就变得至关重要。现在提供几种常用的加密/解密算法。
1.用于文本和Base64编码文本的互相转换 和 Byte[]和Base64编码文本的互相转换:
(1).将普通文本转换成Base64编码的文本
////// 将普通文本转换成Base64编码的文本 /// /// 普通文本 ///public static string StringToBase64String(string value) { if (string.IsNullOrEmpty(value)) { throw new ArgumentNullException(value); } try { var binBuffer = (new UnicodeEncoding()).GetBytes(value); var base64ArraySize = (int)Math.Ceiling(binBuffer.Length / 3d) * 4; var charBuffer = new char[base64ArraySize]; Convert.ToBase64CharArray(binBuffer, 0, binBuffer.Length, charBuffer, 0); var s = new string(charBuffer); return s; } catch (Exception ex) { throw new Exception(ex.Message); } }
(2).将Base64编码的文本转换成普通文本
////// 将Base64编码的文本转换成普通文本 /// /// Base64编码的文本 ///public static string Base64StringToString(string base64) { if (string.IsNullOrEmpty(base64)) { throw new ArgumentNullException(base64); } try { var charBuffer = base64.ToCharArray(); var bytes = Convert.FromBase64CharArray(charBuffer, 0, charBuffer.Length); return (new UnicodeEncoding()).GetString(bytes); } catch (Exception ex) { throw new Exception(ex.Message); } }
(3).将Byte[]转换成Base64编码文本
////// 将Byte[]转换成Base64编码文本 /// /// Byte[] ///public string ToBase64(byte[] binBuffer) { if (binBuffer == null) { throw new ArgumentNullException("binBuffer"); } try { var base64ArraySize = (int)Math.Ceiling(binBuffer.Length / 3d) * 4; var charBuffer = new char[base64ArraySize]; Convert.ToBase64CharArray(binBuffer, 0, binBuffer.Length, charBuffer, 0); var s = new string(charBuffer); return s; } catch (Exception ex) { throw new Exception(ex.Message); } }
(4).将Base64编码文本转换成Byte[]
////// 将Base64编码文本转换成Byte[] /// /// Base64编码文本 ///public byte[] Base64ToBytes(string base64) { if (string.IsNullOrEmpty(base64)) { throw new ArgumentNullException(base64); } try { var charBuffer = base64.ToCharArray(); var bytes = Convert.FromBase64CharArray(charBuffer, 0, charBuffer.Length); return bytes; } catch (Exception ex) { throw new Exception(ex.Message); } }
2. DES加密/解密类。
(1).加密
private static readonly string KEY = "pengze0902"; ////// 加密 /// /// ///public static string Encrypt(string Text) { return Encrypt(Text, KEY); } /// /// 加密数据 /// /// /// ///public static string Encrypt(string Text, string sKey) { var des = new DESCryptoServiceProvider(); var inputByteArray = Encoding.Default.GetBytes(Text); var bKey = Encoding.ASCII.GetBytes(Md5Hash(sKey).Substring(0, 8)); des.Key = bKey; des.IV = bKey; var ms = new System.IO.MemoryStream(); var cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write); cs.Write(inputByteArray, 0, inputByteArray.Length); cs.FlushFinalBlock(); var ret = new StringBuilder(); foreach (byte b in ms.ToArray()) { ret.AppendFormat("{0:X2}", b); } return ret.ToString(); }
(2).解密
private static readonly string KEY = "pengze0902"; ////// 解密 /// /// ///public static string Decrypt(string text) { return Decrypt(text, KEY); } /// /// 解密数据 /// /// /// ///public static string Decrypt(string text, string sKey) { var des = new DESCryptoServiceProvider(); var len = text.Length / 2; byte[] inputByteArray = new byte[len]; int x; for (x = 0; x < len; x++) { var i = Convert.ToInt32(text.Substring(x * 2, 2), 16); inputByteArray[x] = (byte)i; } var bKey = Encoding.ASCII.GetBytes(Md5Hash(sKey).Substring(0, 8)); des.Key = bKey; des.IV = bKey; System.IO.MemoryStream ms = new System.IO.MemoryStream(); CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write); cs.Write(inputByteArray, 0, inputByteArray.Length); cs.FlushFinalBlock(); return Encoding.Default.GetString(ms.ToArray()); }
(3).取得MD5加密串新航道培训
/////// 取得MD5加密串 /// /// 源明文字符串 ///密文字符串 public static string Md5Hash(string input) { var md5 = new MD5CryptoServiceProvider(); var bs = Encoding.UTF8.GetBytes(input); bs = md5.ComputeHash(bs); var s = new StringBuilder(); foreach (var b in bs) { s.Append(b.ToString("x2").ToUpper()); } var password = s.ToString(); return password; }
3.MD5加密
(1). 32位大写
////// 32位大写 /// ///public static string Upper32(string s) { var hashPasswordForStoringInConfigFile = System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(s, "md5"); if (hashPasswordForStoringInConfigFile != null) s = hashPasswordForStoringInConfigFile.ToString(); return s.ToUpper(); }
(2). 32位小写
////// 32位小写 /// ///public static string Lower32(string s) { var hashPasswordForStoringInConfigFile = System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(s, "md5"); if (hashPasswordForStoringInConfigFile != null) s = hashPasswordForStoringInConfigFile.ToString(); return s.ToLower(); }
(3).16位大写
////// 16位大写 /// ///public static string Upper16(string s) { var hashPasswordForStoringInConfigFile = System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(s, "md5"); if (hashPasswordForStoringInConfigFile != null) s = hashPasswordForStoringInConfigFile.ToString(); return s.ToUpper().Substring(8, 16); }
(4).16位小写
////// 16位小写 /// ///public static string Lower16(string s) { var hashPasswordForStoringInConfigFile = System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(s, "md5"); if (hashPasswordForStoringInConfigFile != null) s = hashPasswordForStoringInConfigFile.ToString(); return s.ToLower().Substring(8, 16); }
4.Sha1签名算法
////// 签名算法 /// /// ///public static string GetSha1(string str) { if (string.IsNullOrEmpty(str)) { throw new ArgumentNullException(str); } try { //建立SHA1对象 SHA1 sha = new SHA1CryptoServiceProvider(); //将mystr转换成byte[] var enc = new ASCIIEncoding(); var dataToHash = enc.GetBytes(str); //Hash运算 var dataHashed = sha.ComputeHash(dataToHash); //将运算结果转换成string var hash = BitConverter.ToString(dataHashed).Replace("-", ""); return hash; } catch (Exception ex) { throw new Exception(ex.Message); } }
5.Sha256加密算法
////// 将字符串转换为sha256散列 /// /// 字符串进行转换 ///sha256散列或null public static string ToSha256(this string data) { try { if (string.IsNullOrEmpty(data)) return null; var hashValue = new SHA256Managed().ComputeHash(Encoding.UTF8.GetBytes(data)); var hex = hashValue.Aggregate("", (current, x) => current + String.Format("{0:x2}", x)); if (string.IsNullOrEmpty(hex)) throw new Exception("Erro creating SHA256 hash"); return hex; } catch (Exception e) { throw new Exception(e.Message, e); } }
以上是一些较为常用的算法代码。
文本
编码
加密
算法
普通
大写
字符
字符串
小写
常用
信息
数据
项目
运算
重要
安全
代码
密文
对象
明文
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
从重大事件看网络安全
服务器在网络中的位置
长宁区智能网络技术创新服务
u8的数据库
关系型数据库 设计原则
5线城市软件开发
网易服务器什么时候开服
大同软件开发五星服务
上市公司网络安全报告
中国物联网络技术有限公司
计算机网络技术是软件吗
网络安全法规定及时处置风险
使用服务器域名可不可以备案
走it运维还是软件开发
雅思报考软件开发
创业板科技互联网公司吗
深圳电商软件开发热线
护苗网络安全有感
服务器安全组规则开发
在软件开发中 有哪些阶段
非编 服务器
宁波公司软件开发哪家好
数据库技术概述总结
浪潮服务器怎么重启bmc
江苏品质软件开发销售公司
计算机网络技术应用模块三
白城定制软件开发
淮南浩宇网络技术有限公司
linux应用软件开发
服务器配置及管理技术分析