• C#实现ASE加密解密


    /// <summary>
            /// AES 加密(高级加密标准,是下一代的加密算法标准,速度快,安全级别高,目前 AES 标准的一个实现是 Rijndael 算法)
            /// </summary>
            /// <param name="encryptString">待加密明文</param>
            /// <param name="encryptKey">加密密钥</param>
            /// <returns></returns>
            [HttpPost("test")]
            public string AesEncrypt([FromBody]Request request)
            {
                string encryptString = request.encryptString;
                string encryptKey = request.encryptKey;
                if (string.IsNullOrEmpty(encryptString))
                {
                    throw (new Exception("明文不得为空"));
                }
    
                if (string.IsNullOrEmpty(encryptKey))
                {
                    throw (new Exception("密钥不得为空"));
                }
    
                var mStrEncrypt = "";
    
                var mBtIv = Convert.FromBase64String("Rkb4jvUy/ye7Cd7k89QQgQ==");
    
                var mAesProvider = Rijndael.Create();
    
                try
                {
                    // 待加密明文串转为Bytes格式
                    var mBtEncryptString = Encoding.UTF8.GetBytes(encryptString);
    
                    var mStream = new MemoryStream();
    
                    var mCsstream = new CryptoStream(mStream,
                        mAesProvider.CreateEncryptor(Encoding.UTF8.GetBytes(encryptKey), mBtIv), CryptoStreamMode.Write);
    
                    mCsstream.Write(mBtEncryptString, 0, mBtEncryptString.Length);
                    mCsstream.FlushFinalBlock();
    
                    mStrEncrypt = Convert.ToBase64String(mStream.ToArray());
    
                    mStream.Close();
                    mStream.Dispose();
    
                    mCsstream.Close();
                    mCsstream.Dispose();
                }
                catch (IOException ex)
                {
                    throw ex;
                }
                catch (CryptographicException ex)
                {
                    throw ex;
                }
                catch (ArgumentException ex)
                {
                    throw ex;
                }
                catch (Exception ex)
                {
                    throw ex;
                }
                finally
                {
                    mAesProvider.Clear();
                }
    
                return mStrEncrypt;
            }
    
            /// <summary>
            /// AES 解密(高级加密标准,是下一代的加密算法标准,速度快,安全级别高,目前 AES 标准的一个实现是 Rijndael 算法)
            /// </summary>
            /// <param name="decryptString">待解密密文</param>
            /// <param name="decryptKey">解密密钥</param>
            /// <returns></returns>
            [HttpPost("Decrypt")]
            public string AesDecrypt([FromBody]Request request)
            {
                string decryptString = request.encryptString;
                string decryptKey = request.encryptKey;
                if (string.IsNullOrEmpty(decryptString))
                {
                    throw (new Exception("密文不得为空"));
                }
    
                if (string.IsNullOrEmpty(decryptKey))
                {
                    throw (new Exception("密钥不得为空"));
                }
    
                var mStrDecrypt = "";
    
                var mBtIv = Convert.FromBase64String("Rkb4jvUy/ye7Cd7k89QQgQ==");
    
                var mAesProvider = Rijndael.Create();
    
                try
                {
                    var mBtDecryptString = Convert.FromBase64String(decryptString);
    
                    var mStream = new MemoryStream();
    
                    var mCsstream = new CryptoStream(mStream,
                        mAesProvider.CreateDecryptor(Encoding.UTF8.GetBytes(decryptKey), mBtIv), CryptoStreamMode.Write);
    
                    mCsstream.Write(mBtDecryptString, 0, mBtDecryptString.Length);
                    mCsstream.FlushFinalBlock();
    
                    mStrDecrypt = Encoding.Default.GetString(mStream.ToArray());
    
                    mStream.Close();
                    mStream.Dispose();
    
                    mCsstream.Close();
                    mCsstream.Dispose();
                }
                catch (IOException ex)
                {
                    throw ex;
                }
                catch (CryptographicException ex)
                {
                    throw ex;
                }
                catch (ArgumentException ex)
                {
                    throw ex;
                }
                catch (Exception ex)
                {
                    throw ex;
                }
                finally
                {
                    mAesProvider.Clear();
                }
    
                return mStrDecrypt;
            }
  • 相关阅读:
    20180604_Myeclipse下配置SVN报错问题 svn
    20180603_升级Win10后,远程连接桌面连接,出现身份验证错误!
    20180603_navicat 连接sqlserver提示要安装 sql server native client
    VB.net程序实现分页
    多线程Demo
    多线程Demo VB.net
    SQLServer数据库子结构
    SQLServer数据库常用命令
    传播路径图调查2013年初
    拾遗
  • 原文地址:https://www.cnblogs.com/yxcn/p/11699193.html
Copyright © 2020-2023  润新知