当前位置: 欣欣网 > 码农

开始开源项目OpenTools的创作

2024-05-11码农

前言:开始开源项目的创作。目的是开发一系列方便大家拿来即可使用的工具集合,希望能够让.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

编写加密和解密功能

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

加密解密代码解析:

///<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>publicstaticstringAesEncrypt(string key, string password, string iv) {if (key == null || key.Length < 32)thrownew ArgumentException("Key must be at least 32 characters long.", nameof(key));if (iv == null || iv.Length < 16)thrownew 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>publicstaticstringAESDecrypt(string key, string encryptedText, string iv) {if (key == null || key.Length < 32)thrownew ArgumentException("Key must be at least 32 characters long.", nameof(key));if (iv == null || iv.Length < 16)thrownew 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(); } } } } }