当前位置: 首页 > news >正文

路由 拦截 网站开发中国时事新闻网

路由 拦截 网站开发,中国时事新闻网,怎样创办一个网站,系统网站有哪些前言 在我们日常开发工作中,为了数据安全问题对数据加密、解密是必不可少的。加密方式有很多种如常见的AES,RSA,MD5,SAH1,SAH256,DES等,这时候假如我们有一个封装的对应加密解密工具类可以直接…

图片

前言

在我们日常开发工作中,为了数据安全问题对数据加密、解密是必不可少的。加密方式有很多种如常见的AES,RSA,MD5,SAH1,SAH256,DES等,这时候假如我们有一个封装的对应加密解密工具类可以直接调用,那这样可以节省不少的开发时间。今天推荐一款实用的.NET Core加密解密工具类库:NETCore.Encrypt。

项目介绍

NETCore.Encrypt是.NET Core加密解密工具类库,包括AES、RSA、MD5、SHA1、DES、SHA256、SHA384、SHA512等更多功能。

项目源码

图片

图片

MD5加密

封装方法

        #region MD5/// <summary>/// MD5 hash/// </summary>/// <param name="srcString">The string to be encrypted.</param>/// <param name="length">The length of hash result , default value is <see cref="MD5Length.L32"/>.</param>/// <returns></returns>public static string Md5(string srcString, MD5Length length = MD5Length.L32){Check.Argument.IsNotEmpty(srcString, nameof(srcString));string str_md5_out = string.Empty;using (MD5 md5 = MD5.Create()){byte[] bytes_md5_in = Encoding.UTF8.GetBytes(srcString);byte[] bytes_md5_out = md5.ComputeHash(bytes_md5_in);str_md5_out = length == MD5Length.L32? BitConverter.ToString(bytes_md5_out): BitConverter.ToString(bytes_md5_out, 4, 8);str_md5_out = str_md5_out.Replace("-", "");return str_md5_out;}}#endregion

调用结果

        public static void MD5_Test(){var srcString = "追逐时光者";var hashed = EncryptProvider.Md5(srcString);Console.WriteLine("MD5加密结果:" + hashed);}

图片

图片

RSA加密&解密

封装方法

        /// <summary>/// RSA encrypt/// </summary>/// <param name="publicKey">public key</param>/// <param name="srcString">src string</param>/// <param name="padding">rsa encryptPadding <see cref="RSAEncryptionPadding"/> RSAEncryptionPadding.Pkcs1 for linux/mac openssl </param>/// <param name="isPemKey">set key is pem format,default is false</param>/// <returns>encrypted string</returns>public static string RSAEncrypt(string publicKey, string srcString, RSAEncryptionPadding padding, bool isPemKey = false){Check.Argument.IsNotEmpty(publicKey, nameof(publicKey));Check.Argument.IsNotEmpty(srcString, nameof(srcString));Check.Argument.IsNotNull(padding, nameof(padding));RSA rsa;if (isPemKey){rsa = RsaProvider.FromPem(publicKey);}else{rsa = RSA.Create();rsa.FromJsonString(publicKey);}using (rsa){var maxLength = GetMaxRsaEncryptLength(rsa, padding);var rawBytes = Encoding.UTF8.GetBytes(srcString);if (rawBytes.Length > maxLength){throw new OutofMaxlengthException($"'{srcString}' is out of max encrypt length {maxLength}", maxLength, rsa.KeySize, padding);}byte[] encryptBytes = rsa.Encrypt(rawBytes, padding);return encryptBytes.ToHexString();}}/// <summary>/// RSA decrypt/// </summary>/// <param name="publicKey">public key</param>/// <param name="srcString">src string</param>/// <param name="padding">rsa encryptPadding <see cref="RSAEncryptionPadding"/> RSAEncryptionPadding.Pkcs1 for linux/mac openssl </param>/// <param name="isPemKey">set key is pem format,default is false</param>/// <returns>encrypted string</returns>public static string RSADecrypt(string privateKey, string srcString, RSAEncryptionPadding padding, bool isPemKey = false){Check.Argument.IsNotEmpty(privateKey, nameof(privateKey));Check.Argument.IsNotEmpty(srcString, nameof(srcString));Check.Argument.IsNotNull(padding, nameof(padding));RSA rsa;if (isPemKey){rsa = RsaProvider.FromPem(privateKey);}else{rsa = RSA.Create();rsa.FromJsonString(privateKey);}using (rsa){byte[] srcBytes = srcString.ToBytes();byte[] decryptBytes = rsa.Decrypt(srcBytes, padding);return Encoding.UTF8.GetString(decryptBytes);}}

调用结果

        #region Rsa加密&解密public static void Rsa_Encrypt_Decrypt_Test(RsaSize size){var rsaKey = EncryptProvider.CreateRsaKey(size);var srcString = "追逐时光者";var encrypted = EncryptProvider.RSAEncrypt(rsaKey.PublicKey, srcString);Console.WriteLine("RSA加密结果:" + encrypted);Console.WriteLine("\r\n");var decrypted = EncryptProvider.RSADecrypt(rsaKey.PrivateKey, encrypted);Console.WriteLine("RSA解密结果:" + decrypted);}#endregion

图片

DES加密&解密

封装方法

        /// <summary>/// DES encrypt/// </summary>/// <param name="data">Raw data byte array</param>/// <param name="key">Key, requires 24 bits</param>/// <param name="vector">IV,requires 8 bits</param>/// <returns>Encrypted byte array</returns>public static byte[] DESEncrypt(byte[] data, string key, string vector){Check.Argument.IsNotEmpty(data, nameof(data));Check.Argument.IsNotEmpty(key, nameof(key));Check.Argument.IsEqualLength(key.Length, 24, nameof(key));Check.Argument.IsNotEmpty(vector, nameof(vector));Check.Argument.IsEqualLength(vector.Length, 8, nameof(vector));return DESEncrypt(data, key, CipherMode.CBC, vector);}/// <summary>/// DES encrypt/// </summary>/// <param name="data">Raw data</param>/// <param name="key">Key, requires 24 bits</param>/// <param name="cipherMode"><see cref="CipherMode"/></param>/// <param name="paddingMode"><see cref="PaddingMode"/> default is PKCS7</param>/// <param name="vector">IV,requires 8 bits</param>/// <returns>Encrypted byte array</returns>private static byte[] DESEncrypt(byte[] data, string key, CipherMode cipherMode, string vector = "", PaddingMode paddingMode = PaddingMode.PKCS7){Check.Argument.IsNotEmpty(data, nameof(data));Check.Argument.IsNotEmpty(key, nameof(key));Check.Argument.IsEqualLength(key.Length, 24, nameof(key));using (MemoryStream Memory = new MemoryStream()){using (TripleDES des = TripleDES.Create()){byte[] plainBytes = data;byte[] bKey = new byte[24];Array.Copy(Encoding.UTF8.GetBytes(key.PadRight(bKey.Length)), bKey, bKey.Length);des.Mode = cipherMode;des.Padding = paddingMode;des.Key = bKey;if (cipherMode == CipherMode.CBC){byte[] bVector = new byte[8];Array.Copy(Encoding.UTF8.GetBytes(vector.PadRight(bVector.Length)), bVector, bVector.Length);des.IV = bVector;}using (CryptoStream cryptoStream = new CryptoStream(Memory, des.CreateEncryptor(), CryptoStreamMode.Write)){try{cryptoStream.Write(plainBytes, 0, plainBytes.Length);cryptoStream.FlushFinalBlock();return Memory.ToArray();}catch (Exception ex){return null;}}}}}/// <summary>/// DES encrypt/// </summary>/// <param name="data">Raw data byte array</param>/// <param name="key">Key, requires 24 bits</param>/// <param name="vector">IV,requires 8 bits</param>/// <returns>Encrypted byte array</returns>public static byte[] DESDecrypt(byte[] data, string key, string vector){Check.Argument.IsNotEmpty(data, nameof(data));Check.Argument.IsNotEmpty(key, nameof(key));Check.Argument.IsEqualLength(key.Length, 24, nameof(key));Check.Argument.IsNotEmpty(vector, nameof(vector));Check.Argument.IsEqualLength(vector.Length, 8, nameof(vector));return DESDecrypt(data, key, CipherMode.CBC, vector);}/// <summary>/// DES decrypt/// </summary>/// <param name="data">Encrypted data</param>/// <param name="key">Key, requires 24 bits</param>/// <param name="cipherMode"><see cref="CipherMode"/></param>/// <param name="paddingMode"><see cref="PaddingMode"/> default is PKCS7</param>/// <returns>Decrypted byte array</returns>private static byte[] DESDecrypt(byte[] data, string key, CipherMode cipherMode, string vector = "", PaddingMode paddingMode = PaddingMode.PKCS7){Check.Argument.IsNotEmpty(data, nameof(data));Check.Argument.IsNotEmpty(key, nameof(key));Check.Argument.IsEqualLength(key.Length, 24, nameof(key));byte[] encryptedBytes = data;byte[] bKey = new byte[24];Array.Copy(Encoding.UTF8.GetBytes(key.PadRight(bKey.Length)), bKey, bKey.Length);using (MemoryStream Memory = new MemoryStream(encryptedBytes)){using (TripleDES des = TripleDES.Create()){des.Mode = cipherMode;des.Padding = paddingMode;des.Key = bKey;if (cipherMode == CipherMode.CBC){byte[] bVector = new byte[8];Array.Copy(Encoding.UTF8.GetBytes(vector.PadRight(bVector.Length)), bVector, bVector.Length);des.IV = bVector;}using (CryptoStream cryptoStream = new CryptoStream(Memory, des.CreateDecryptor(), CryptoStreamMode.Read)){try{byte[] tmp = new byte[encryptedBytes.Length];int len = cryptoStream.Read(tmp, 0, encryptedBytes.Length);byte[] ret = new byte[len];Array.Copy(tmp, 0, ret, 0, len);return ret;}catch{return null;}}}}}

调用结果

        #region DES加密&解密public static void DES_Encrypt_Decrypt_Test(){var srcString = "TEST DES Encrypt Decrypt";string key = EncryptProvider.CreateDesKey();string iv = EncryptProvider.CreateDesIv();var srsDatas = Encoding.UTF8.GetBytes(srcString);var encrypted = EncryptProvider.DESEncrypt(srsDatas, key, iv);Console.WriteLine("DES加密结果:" + encrypted); Console.WriteLine("\r\n");var decrypted = EncryptProvider.DESDecrypt(encrypted, key, iv);var decryptedStr = Encoding.UTF8.GetString(decrypted);Console.WriteLine("DES解密结果:" + decryptedStr);}#endregion

图片

AES加密&解密

封装方法

        /// <summary>/// AES encrypt ( no IV)/// </summary>/// <param name="data">Raw data</param>/// <param name="key">Key, requires 32 bits</param>/// <returns>Encrypted string</returns>public static string AESEncrypt(string data, string key){Check.Argument.IsNotEmpty(data, nameof(data));Check.Argument.IsNotEmpty(key, nameof(key));Check.Argument.IsEqualLength(key.Length, 32, nameof(key));using (MemoryStream memory = new MemoryStream()){using (Aes aes = Aes.Create()){byte[] plainBytes = Encoding.UTF8.GetBytes(data);byte[] bKey = new byte[32];Array.Copy(Encoding.UTF8.GetBytes(key.PadRight(bKey.Length)), bKey, bKey.Length);aes.Mode = CipherMode.ECB;aes.Padding = PaddingMode.PKCS7;aes.KeySize = 256;aes.Key = bKey;using (CryptoStream cryptoStream = new CryptoStream(memory, aes.CreateEncryptor(), CryptoStreamMode.Write)){try{cryptoStream.Write(plainBytes, 0, plainBytes.Length);cryptoStream.FlushFinalBlock();return Convert.ToBase64String(memory.ToArray());}catch (Exception ex){return null;}}}}}/// <summary>/// AES decrypt( no IV)/// </summary>/// <param name="data">Encrypted data</param>/// <param name="key">Key, requires 32 bits</param>/// <returns>Decrypted string</returns>public static string AESDecrypt(string data, string key){Check.Argument.IsNotEmpty(data, nameof(data));Check.Argument.IsNotEmpty(key, nameof(key));Check.Argument.IsEqualLength(key.Length, 32, nameof(key));byte[] encryptedBytes = Convert.FromBase64String(data);byte[] bKey = new byte[32];Array.Copy(Encoding.UTF8.GetBytes(key.PadRight(bKey.Length)), bKey, bKey.Length);try{byte[] decryptedData = null; // decrypted datausing (MemoryStream memory = new MemoryStream(encryptedBytes)){using (Aes aes = Aes.Create()){aes.Mode = CipherMode.ECB;aes.Padding = PaddingMode.PKCS7;aes.KeySize = 256;aes.Key = bKey;using (CryptoStream decryptor = new CryptoStream(memory, aes.CreateDecryptor(), CryptoStreamMode.Read)){using (MemoryStream tempMemory = new MemoryStream()){byte[] buffer = new byte[1024];Int32 readBytes = 0;while ((readBytes = decryptor.Read(buffer, 0, buffer.Length)) > 0){tempMemory.Write(buffer, 0, readBytes);}decryptedData = tempMemory.ToArray();return Encoding.UTF8.GetString(decryptedData);}}}}}catch{return null;}}

调用结果

        #region AES加密&解密public static void Aes_Encrypt_Decrypt_Test(){var aesKey = EncryptProvider.CreateAesKey();var key = aesKey.Key;var srcString = "追逐时光者";var encrypted = EncryptProvider.AESEncrypt(srcString, key);Console.WriteLine("AES加密结果:" + encrypted);Console.WriteLine("\r\n");var decrypted = EncryptProvider.AESDecrypt(encrypted, key);Console.WriteLine("AES解密结果:" + decrypted);}#endregion

图片

项目源码地址

更多项目实用功能和特性欢迎前往项目开源地址查看👀,别忘了给项目一个Star支持💖。

https://github.com/myloveCc/NETCore.Encrypt

优秀项目和框架精选

该项目已收录到C#/.NET/.NET Core优秀项目和框架精选中,关注优秀项目和框架精选能让你及时了解C#、.NET和.NET Core领域的最新动态和最佳实践,提高开发工作效率和质量。坑已挖,欢迎大家踊跃提交PR推荐或自荐(让优秀的项目和框架不被埋没🤞)。

https://github.com/YSGStudyHards/DotNetGuide/blob/main/docs/DotNet/DotNetProjectPicks.md

http://www.wooajung.com/news/31725.html

相关文章:

  • 泉州企业网站维护制作哪里可以建网站
  • 鲜花店网站源码网络优化有前途吗
  • 建设局入市备案后到哪个网站可查询深圳平台推广
  • 护士公共课在哪个网站做好的营销网站设计公司
  • 牛搬家网企业网站排名网站seo诊断技巧
  • 长沙做网站微联讯点靠谱网店推广渠道有哪些
  • 新疆网站制作站长seo软件
  • 布吉做棋牌网站建设哪家服务好网络营销公司全网推广公司
  • 怎样靠做网站赚钱吗seo搜索引擎是什么
  • 网站制作排版注意事项seo优化公司
  • 做网站不给源码杭州优化建筑设计
  • 创建手机网站淘宝客推广
  • 网站搭建怎么收费如何设计推广方案
  • 易语言如何做网站360seo排名点击软件
  • 简单的网站开发的软件seo实战培训教程
  • 网站建设遵循的规范市场推广方案怎么做
  • 个人网站名网站排名优化怎样做
  • 公司做网站的费用如何记账seo的范畴是什么
  • wordpress模板更换百度seo价格查询
  • 支付宝也做网站吗怎么注册域名网址
  • 达建网站防止爬虫的办法市场营销网站
  • 自己建网站卖鞋百度一下官网首页下载
  • 小江高端网站建设宁波网络营销公司
  • 温州鹿城区企业网站搭建济南网站seo
  • 做异形建筑的网站百度首页
  • 猪八戒网做动漫弹幕网站seo自动排名软件
  • 用html5的视频网站搜索引擎优化的主要工作有
  • asp购物网站客户查看购物车福州seo博客
  • 网页游戏网站在线玩澳门seo关键词排名
  • 企业起名网站怎么做百度上传自己个人简介