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

发布了一个网站 显示建设中做一个个人网站

发布了一个网站 显示建设中,做一个个人网站,怎样做公众号,传播易网站开发方案介绍: Rijndael 是一种对称加密算法,也是 AES(Advanced Encryption Standard)的前身。它用于数据的加密和解密,并提供了安全且高效的加密功能。 在.NET Framework 中,Rijndael 类是一个实现了 Rijndael 算法…

介绍:

        Rijndael 是一种对称加密算法,也是 AES(Advanced Encryption Standard)的前身。它用于数据的加密和解密,并提供了安全且高效的加密功能。 在.NET Framework 中,Rijndael 类是一个实现了 Rijndael 算法的具体加密器。它是 SymmetricAlgorithm 抽象类的子类之一,可以用于对数据进行加密和解密操作。该算法汇聚了强安全性、高性能、高效率、易用和灵活等优点。算法支持128位(16个字节)、192位(24个字节)和256位(32个字节)的密钥长度。

加密代码:

        /// <summary>/// AES 加密/// </summary>/// <param name="encryptData">待加密数据流</param>/// <param name="encryptKey">加密密钥</param>/// <returns>加密的数据流</returns>public static byte[] Encrypt(byte[] encryptData, string encryptKey){if (encryptData.Length == 0) { throw (new Exception("密文不得为空")); }if (string.IsNullOrEmpty(encryptKey)) { throw (new Exception("密钥不得为空")); }byte[] m_btEncrypt;//Rijndael 是一种对称加密算法,也是 AES(Advanced Encryption Standard)的前身。它用于数据的加密和解密,并提供了安全且高效的加密功能。 在.NET Framework 中,Rijndael 类是一个实现了 Rijndael 算法的具体加密器。它是 SymmetricAlgorithm 抽象类的子类之一,可以用于对数据进行加密和解密操作。Rijndael m_AESProvider = Rijndael.Create();try{SetKeyAndIV(m_AESProvider, encryptKey);//CryptoStream 是 .NET Framework 中的一个类,用于在加密和解密过程中提供对数据流的加密或解密转换。它是 System.IO.Stream 类的派生类。CryptoStream 通过将其包装在一个输入或输出流中,提供了对数据流进行加密或解密的能力。它可以与任何实现了 SymmetricAlgorithm 或 AsymmetricAlgorithm 的加密算法一起使用。using (MemoryStream m_stream = new MemoryStream())using (CryptoStream m_csstream = new CryptoStream(m_stream, m_AESProvider.CreateEncryptor(), CryptoStreamMode.Write)){m_csstream.Write(encryptData, 0, encryptData.Length);m_csstream.FlushFinalBlock();m_btEncrypt = m_stream.ToArray();//m_stream.Close();//m_stream.Dispose();//m_csstream.Close();//m_csstream.Dispose();}}catch (IOException ex) { throw ex; }catch (CryptographicException ex) { throw ex; }catch (ArgumentException ex) { throw ex; }catch (Exception ex) { throw ex; }finally { m_AESProvider.Clear(); }return m_btEncrypt;}/// <summary>/// 设置密钥和初始化向量/// </summary>/// <param name="algorithm"></param>/// <param name="key">密钥</param>private static void SetKeyAndIV(SymmetricAlgorithm algorithm, string key){// 生成随机密钥和初始化向量//algorithm.GenerateKey();//algorithm.GenerateIV();byte[] m_btIV = new byte[16]{2,3,73,192,68,245,71,131,2,142,97,11,230,110,216,247};byte[] m_btSalt = new byte[2] { 35, 25 };//PasswordDeriveBytes 是 .NET Framework 中的一个类,用于从密码派生加密密钥。它是 System.Security.Cryptography.DeriveBytes 类的子类。PasswordDeriveBytes 通过在密码和盐值(salt)之间进行迭代哈希操作来生成强大的加密密钥。它可用于生成符合特定算法要求的密钥,例如 AES、TripleDES 和 RC2。PasswordDeriveBytes passwordDeriveBytes = new PasswordDeriveBytes(key, m_btSalt);//Key是一个字节数组,表示对称算法所使用的密钥。密钥的长度通常由所选的对称算法确定,通常为 128 比特、192 比特或 256 比特。对于相同的密钥和相同的输入,在相同的对称算法下会产生相同的输出。algorithm.Key = passwordDeriveBytes.GetBytes(32);//IV 是一个字节数组,表示对称算法的初始化向量。初始化向量是在加密过程中用于生成随机性的初始输入值。它与密钥一起用于变换数据,并确保即使相同的输入也能得到不同的加密结果。algorithm.IV = m_btIV;}

解密代码:

        /// <summary>/// AES 解密/// </summary>/// <param name="decryptData">待解密数据流</param>/// <param name="decryptKey">解密密钥</param>/// <returns>解密的数据流</returns>public static byte[] Decrypt(byte[] decryptData, string decryptKey){if (decryptData.Length == 0) { throw (new Exception("密文不得为空")); }if (string.IsNullOrEmpty(decryptKey)) { throw (new Exception("密钥不得为空")); }byte[] m_btDecrypt;Rijndael m_AESProvider = Rijndael.Create();try{SetKeyAndIV(m_AESProvider, decryptKey);using (MemoryStream m_stream = new MemoryStream())using (CryptoStream m_csstream = new CryptoStream(m_stream, m_AESProvider.CreateDecryptor(), CryptoStreamMode.Write)){m_csstream.Write(decryptData, 0, decryptData.Length);m_csstream.FlushFinalBlock();m_btDecrypt = m_stream.ToArray();//m_stream.Close();//m_stream.Dispose();//m_csstream.Close();//m_csstream.Dispose();}}catch (IOException ex) { throw ex; }catch (CryptographicException ex) { throw ex; }catch (ArgumentException ex) { throw ex; }catch (Exception ex) { throw ex; }finally { m_AESProvider.Clear(); }return m_btDecrypt;}

应用示例:

1、加解密字符串

string key = "ae125efkk4_54eeff444ferfkny6ox22666";
string encryptText = "张三";
byte[] encryptData = Encoding.Default.GetBytes(encryptText);byte[] btencryptResult = Encrypt(encryptData, key);
Console.WriteLine(Convert.ToBase64String(btencryptResult)); //结果显示: XXXXXXXbyte[] btdecryptResult = Decrypt(btencryptResult, key);
Console.WriteLine(Encoding.Default.GetString(btdecryptResult)); //结果显示: 张三

2、加解密文件

string key = "ae125efkk4_54eeff444ferfkny6ox22666";
//针对文件的加解密
string filePath = @"D:\data\test.aes";
string encryptPath = filePath + "en";
int dataSize = 104096;
AESFile(filePath, encryptPath, dataSize, key, Encrypt);int deSize = 104112;//Rijndael 算法(也称为 AES)以固定大小的数据块进行加密,默认情况下为 128 位(16 字节)。
string decryptPath = filePath + "de";
AESFile(encryptPath, decryptPath, deSize, key, Decrypt);
/// <summary>
/// AES加解密文件
/// </summary>
/// <param name="sourcePath">源文件路径</param>
/// <param name="tarPath">目标路径</param>
/// <param name="dataSize">数据流大小</param>
/// <param name="key">密钥</param>
/// <param name="action">方法</param>
private static void AESFile(string sourcePath, string tarPath, int dataSize, string key, Func<byte[], string, byte[]> action)
{using (FileStream fileStream = new FileStream(sourcePath, FileMode.Open, FileAccess.Read)){using (FileStream fileStream2 = new FileStream(tarPath, FileMode.OpenOrCreate, FileAccess.Write)){int num = (int)((fileStream.Length - 1) / dataSize + 1);for (int i = 0; i < num; i++){int relSize = dataSize;if (i == num - 1){relSize = (int)(fileStream.Length - i * dataSize);}byte[] array = new byte[relSize];fileStream.Read(array, 0, relSize);byte[] array2 = action?.Invoke(array, key);fileStream2.Write(array2, 0, array2.Length);fileStream2.Flush();}fileStream2.Close();fileStream2.Dispose();}}
}

黑云压城城欲摧,甲光向日金鳞开。--李贺《雁门太守行》

http://www.hkea.cn/news/117444/

相关文章:

  • 最便宜的外贸网站建设电商平台运营方案
  • 做网站应该会什么问题网络营销软文范例500字
  • 摄影网课百度关键词优化查询
  • 打广告型的营销网站西安百度推广外包
  • 乌鲁木齐招聘网站建设一站式网络营销
  • 中小型网站建设服务淘宝数据分析工具
  • 梧州网站设计企业网站模板建站
  • 行政事业单位网站建设建议营销策划公司
  • 网络推广网站怎么做百度联盟广告点击一次收益
  • wordpress居中样式宁波seo网络推广外包报价
  • java做网站用到哪些技术网络营销的重要性与意义
  • 网络营销推广的作用谷歌seo什么意思
  • 免费网站建设解决方案郑州网络营销公司哪个好
  • 转转怎么做钓鱼网站税收大数据
  • 株洲专业网站排名优化深圳产品网络推广
  • 深圳美食教学网站制作如何免费搭建自己的网站
  • 兰州移动端网站建设广东整治互联网霸王条款
  • 彩票网站该怎么建设天津seo实战培训
  • 原平的旅游网站怎么做的新冠疫情最新情况最新消息
  • 网站开发软件著作权归谁seo外包
  • 小说网站的网编具体做哪些工作南宁网站快速排名提升
  • 承德网站设计seo互联网营销培训
  • 工信部网站备案查询 手机seo专员的工作内容
  • 淘宝活动策划网站视频营销成功的案例
  • 精准营销数据杭州排名优化软件
  • 中卫网站建站设计seo学习论坛
  • wordpress初始登录seo排名赚app靠谱吗
  • 软件外包保密协议seo相关岗位
  • 后台网站开发文档下载班级优化大师app
  • 辛集城乡建设管理局网站网络营销网络推广