DotNet中几种常用的加密算法
发表于:2025-01-21 作者:千家信息网编辑
千家信息网最后更新 2025年01月21日,在.NET项目中,我们较多的使用到加密这个操作。因为在现代的项目中,对信息安全的要求越来越高,那么多信息的加密就变得至关重要。现在提供几种常用的加密/解密算法。1.用于文本和Base64编码文本的互相
千家信息网最后更新 2025年01月21日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安全错误
数据库的锁怎样保障安全
广州软件开发企业名称
网络安全大队介绍
网络技术灵魂拷问
银行的软件开发基本做什么
db2数据库 客户端
网络安全知识来了
广电网络安全施工协议
涸辙之鲋翻译软件开发
java数据库连接池存活时长
濮阳服务器机柜参数
cds 数据库
乌镇的互联网小镇科技馆项目
科技互联网博览会
资阳软件开发成交价
nit网络技术
服务器天组
网络管理服务器技术毕业设计书
在数据库中如何保存文件
云安全管理平台的云数据库
提高网络安全英语作文
数据库和人工智能的不同
阴阳师怎么看我的服务器
马车8服务器维护
软件开发需求进度管理工具
无线传感网络技术及数据处理
苏州科达软件开发工资
f9800对接数据库平台
手机应用软件开发 北京
西安胖猫网络技术有限公司
林业局网络安全执法自查总结