src/DotNetCommon.Core/Encrypt/AESEncrpt.cs

(开头部分) 7KB

这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。

using DotNetCommon.Extensions;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Security.Cryptography;
using System.Text;
using System.Text.RegularExpressions;

namespace DotNetCommon.Encrypt
{
    /// <summary>
    /// AES加解密
    /// </summary>
    public static class AESEncrypt
    {
        /// <summary>
        /// AES加密字符串
        /// </summary>
        /// <param name="encryptString">待加密字符串</param>
        /// <param name="encryptKey">加密密钥ASCII码,最长32位</param>
        /// <exception cref="Exception"></exception>
        /// <returns>加密结果字符串(16进制表示法)</returns>
        public static string Encrypt(string encryptString, string encryptKey)
        {
            if (string.IsNullOrEmpty(encryptString)) return encryptString;
            if (string.IsNullOrWhiteSpace(encryptKey)) throw new Exception("秘钥格式不正确!");
            if (encryptKey.Length > 32) throw new Exception("秘钥长度最大32位!");
            var (key, iv) = getKeyIv(encryptKey);
            using var rijndaelProvider = new RijndaelManaged
            {
                Key = key,
                IV = iv,
                Padding = PaddingMode.PKCS7
            };
            using ICryptoTransform rijndaelEncrypt = rijndaelProvider.CreateEncryptor();
            byte[] inputData = Encoding.UTF8.GetBytes(encryptString);
            byte[] encryptedData = rijndaelEncrypt.TransformFinalBlock(inputData, 0, inputData.Length);
            StringBuilder ret = new StringBuilder();
            foreach (byte b in encryptedData)
            {
                ret.AppendFormat("{0:X2}", b);
            }
            return ret.ToString();
        }

        /// <summary>
        /// AES解密字符串
        /// </summary>
        /// <param name="decryptString">待解密的字符串</param>
        /// <param name="decryptKey">加密密钥ASCII码,最长32位</param>
        /// <returns>解密后的字符串</returns>
        public static string Decrypt(string decryptString, string decryptKey)
        {
            if (string.IsNullOrEmpty(decryptString)) return decryptString;
            if (string.IsNullOrWhiteSpace(decryptKey)) throw new Exception("秘钥格式不正确!");
            if (decryptKey.Length > 32) throw new Exception("秘钥长度最大32位!");
            var (key, iv) = getKeyIv(decryptKey);
            using var rijndaelProvider = new RijndaelManaged
            {
后面还有 130 行代码,解锁后查看完整代码

24 小时内免费解锁 3 个项目,之后 1 积分/个。 规则说明

AI 解读

登录后可用,每次 10 积分,解读结果公开显示在下面。

还没有人解读过这个文件。