zoukankan      html  css  js  c++  java
  • C# 实现 AES 加密算法

    开篇日常立个flag....

    代码

    命名空间 System.Security.Cryptography

    public enum enmKeyBit
    {
        KeyBit128 = 128,
        KeyBit192 = 192,
        KeyBit256 = 256,
    }
    
    public class EncryptNew
    {
        /// <summary>
        /// AES ECB模式 加密
        /// </summary>
        /// <param name="data">明文</param>
        /// <param name="key">密钥</param>
        /// <param name="keyBit">密钥位数</param>
        /// <returns></returns>
        public static string AESEncrypt(String data, String key, enmKeyBit keyBit = enmKeyBit.KeyBit256)
        {
            if (string.IsNullOrEmpty(data))
            {
                return string.Empty;
            }
    
            try
            {
                int intKeyBit = (int)keyBit;
                RijndaelManaged aes = new RijndaelManaged();
                byte[] bytsData = Encoding.UTF8.GetBytes(data);
                byte[] bytsKey = new Byte[intKeyBit / 8];
                Array.Copy(Encoding.UTF8.GetBytes(key.PadRight(bytsKey.Length)), bytsKey, bytsKey.Length);
    
                aes.Mode = CipherMode.ECB;
                aes.Padding = PaddingMode.PKCS7;
                aes.KeySize = intKeyBit;
                aes.Key = bytsKey;
                //aes.IV = iv;
                ICryptoTransform ctf = aes.CreateEncryptor();
                byte[] bytsResult = ctf.TransformFinalBlock(bytsData, 0, bytsData.Length);
    
                return Convert.ToBase64String(bytsResult);
            }
            catch
            {
                return string.Empty;
            }
        }
    
        /// <summary>
        /// AES ECB模式 解密
        /// </summary>
        /// <param name="data">密文</param>
        /// <param name="key">密钥</param>
        /// <param name="keyBit">密钥位数</param>
        /// <returns></returns>
        public static string AESDecrypt(String data, String key, enmKeyBit keyBit = enmKeyBit.KeyBit256)
        {
            if (string.IsNullOrEmpty(data))
            {
                return string.Empty;
            }
    
            try
            {
                int intKeyBit = (int)keyBit;
                RijndaelManaged aes = new RijndaelManaged();
                byte[] bytsData = Convert.FromBase64String(data);
                byte[] bytsKey = new Byte[intKeyBit / 8];
                Array.Copy(Encoding.UTF8.GetBytes(key.PadRight(bytsKey.Length)), bytsKey, bytsKey.Length);
    
                aes.Mode = CipherMode.ECB;
                aes.Padding = PaddingMode.PKCS7;
                aes.KeySize = intKeyBit;
                aes.Key = bytsKey;
                //aes.IV = iv;
    
                ICryptoTransform ctf = aes.CreateDecryptor();
                byte[] bytsResult = ctf.TransformFinalBlock(bytsData, 0, bytsData.Length);
    
                return UTF8Encoding.UTF8.GetString(bytsResult);
            }
            catch
            {
                return string.Empty;
            }
        }
    }
    

      

  • 相关阅读:
    LeetCode 12. Integer to Roman
    个人博客09
    个人博客08
    人机交互之我的输入法
    学习进度条(第六周)
    《梦断代码》阅读笔记02
    个人博客07
    学习进度条(第五周)
    个人博客06
    个人博客05
  • 原文地址:https://www.cnblogs.com/clis/p/14299981.html
Copyright © 2011-2022 走看看