开始开源项目OpenTools的创作

前言:开始开源项目的创作。目的是开发一系列方便大家拿来即可使用的工具集合,希望能够让.net的生态更加丰富。该项目采用MIT开源。并且如果引用nuget包,该项目可以兼容.net framework4.6.1以及以上的所有.nrt framework以及所有.net core或以上环境的所有.net版本。

Wesky.Net.OpenTools,开源地址:https://gitee.com/dreamer_j/open-tools.git

第一个nuget包版本,目前只有AES加密和解密,以及Byte数据转换两个功能。将来会继续不断完善、拓展。

先使用下第一个功能,AES加解密。

编写一个简单的控制台,,nuget包引用  WSesky.Net.OpenTools

5c4484b869a028dbabbf00c30dbe1db2.png

编写加密和解密功能

20d90ffa55d43c67b72c5ee09287ff75.png

运行,得到加密和解密结果。

3fd0bef9c0f8446abfb264e0449ecac3.png

加密解密代码解析:

/// <summary>
 /// 使用AES加密算法加密文本。
 /// Encrypts the text using AES encryption algorithm.
 /// </summary>
 /// <param name="key">加密密钥,必须是32字符长。/ Encryption key, must be 32 characters long.</param>
 /// <param name="password">要加密的文本。/ The text to be encrypted.</param>
 /// <param name="iv">初始化向量,必须是16字符长。/ Initialization vector, must be 16 characters long.</param>
 /// <returns>加密后的十六进制字符串。/ Encrypted text in hexadecimal string format.</returns>
 public static string AesEncrypt(string key, string password, string iv)
 {
     if (key == null || key.Length < 32)
         throw new ArgumentException("Key must be at least 32 characters long.", nameof(key));
     if (iv == null || iv.Length < 16)
         throw new ArgumentException("IV must be at least 16 characters long.", nameof(iv));


     byte[] keyBytes = Encoding.UTF8.GetBytes(key.Substring(0, 32));
     byte[] ivBytes = Encoding.UTF8.GetBytes(iv.Substring(0, 16));


     using (AesCryptoServiceProvider aesAlg = new AesCryptoServiceProvider())
     {
         aesAlg.Key = keyBytes;
         aesAlg.IV = ivBytes;


         ICryptoTransform encryptor = aesAlg.CreateEncryptor(aesAlg.Key, aesAlg.IV);
         using (MemoryStream msEncrypt = new MemoryStream())
         {
             using (CryptoStream csEncrypt = new CryptoStream(msEncrypt, encryptor, CryptoStreamMode.Write))
             {
                 using (StreamWriter swEncrypt = new StreamWriter(csEncrypt))
                 {
                     swEncrypt.Write(password);
                 }
                 return ByteConvert.ByteArrayToHexString(msEncrypt.ToArray());
             }
         }
     }
 }


 /// <summary>
 /// 使用AES解密算法解密文本。
 /// Decrypts the text using the AES decryption algorithm.
 /// </summary>
 /// <param name="key">解密密钥,必须是32字符长。/ Decryption key, must be 32 characters long.</param>
 /// <param name="encryptedText">要解密的文本,以十六进制字符串格式。/ The text to be decrypted, in hexadecimal string format.</param>
 /// <param name="iv">初始化向量,必须是16字符长。/ Initialization vector, must be 16 characters long.</param>
 /// <returns>解密后的字符串。/ Decrypted string.</returns>
 public static string AESDecrypt(string key, string encryptedText, string iv)
 {
     if (key == null || key.Length < 32)
         throw new ArgumentException("Key must be at least 32 characters long.", nameof(key));
     if (iv == null || iv.Length < 16)
         throw new ArgumentException("IV must be at least 16 characters long.", nameof(iv));


     byte[] inputBytes = ByteConvert.HexStringToByteArray(encryptedText);
     byte[] keyBytes = Encoding.UTF8.GetBytes(key.Substring(0, 32));
     byte[] ivBytes = Encoding.UTF8.GetBytes(iv.Substring(0, 16));


     using (AesCryptoServiceProvider aesAlg = new AesCryptoServiceProvider())
     {
         aesAlg.Key = keyBytes;
         aesAlg.IV = ivBytes;


         ICryptoTransform decryptor = aesAlg.CreateDecryptor(aesAlg.Key, aesAlg.IV);
         using (MemoryStream msDecrypt = new MemoryStream(inputBytes))
         {
             using (CryptoStream csDecrypt = new CryptoStream(msDecrypt, decryptor, CryptoStreamMode.Read))
             {
                 using (StreamReader srDecrypt = new StreamReader(csDecrypt))
                 {
                     return srDecrypt.ReadToEnd();
                 }
             }
         }
     }
 }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值