zoukankan      html  css  js  c++  java
  • C#学习八之AES加密封装

    高级加密标准英语Advanced Encryption Standard缩写AES),在密码学中又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用。经过五年的甄选流程,高级加密标准由美国国家标准与技术研究院(NIST)于2001年11月26日发布于FIPS PUB 197,并在2002年5月26日成为有效的标准。2006年,高级加密标准已然成为对称密钥加密中最流行的算法之一。

    C#中需要引用一个类System.Security.Cryptography提供了一个算法;通过这个类和另一个类System.IO;的流输入输出

    自己只需要写一个类就可以实现AES加密的方法:

    代码如下:

     

    public static string AESEncrypt(string EncryptString, string EncryptKey)
            {
                if (string.IsNullOrEmpty(EncryptString)) { throw (new Exception("密文不得为空")); }
                if (string.IsNullOrEmpty(EncryptKey)) { throw (new Exception("密钥不得为空")); }
                string m_strEncrypt = "";
                byte[] m_btIV = Convert.FromBase64String("Rkb4jvUy/ye7Cd7k89QQgQ==");
                Rijndael m_AESProvider = Rijndael.Create();
                try
                {
                    byte[] m_btEncryptString = Encoding.Default.GetBytes(EncryptString);
                    MemoryStream m_stream = new MemoryStream();
                    CryptoStream m_csstream = new CryptoStream(m_stream, m_AESProvider.CreateEncryptor(Encoding.Default.GetBytes(EncryptKey), m_btIV), CryptoStreamMode.Write);
                    m_csstream.Write(m_btEncryptString, 0, m_btEncryptString.Length); m_csstream.FlushFinalBlock();
                    m_strEncrypt = Convert.ToBase64String(m_stream.ToArray());
                    m_stream.Close(); m_stream.Dispose();
                    m_csstream.Close(); m_csstream.Dispose();
                }
                catch (IOException ex) { throw ex; }
                catch (CryptographicException ex) { throw ex; }
                catch (ArgumentException ex) { throw ex; }
                catch (Exception ex) { throw ex; }
                finally { m_AESProvider.Clear(); }
                return m_strEncrypt;
            }
            public static string AESDecrypt(string DecryptString, string DecryptKey)
            {
                if (string.IsNullOrEmpty(DecryptString)) { throw (new Exception("密文不得为空")); }
                if (string.IsNullOrEmpty(DecryptKey)) { throw (new Exception("密钥不得为空")); }
                string m_strDecrypt = "";
                byte[] m_btIV = Convert.FromBase64String("YiOujvUy/y$7Cd7k89CCgQ=@");
                Rijndael m_AESProvider = Rijndael.Create();
                try
                {
                    byte[] m_btDecryptString = Convert.FromBase64String(DecryptString);
                    MemoryStream m_stream = new MemoryStream();
                    CryptoStream m_csstream = new CryptoStream(m_stream, m_AESProvider.CreateDecryptor(Encoding.Default.GetBytes(DecryptKey), m_btIV), CryptoStreamMode.Write);
                    m_csstream.Write(m_btDecryptString, 0, m_btDecryptString.Length); m_csstream.FlushFinalBlock();
                    m_strDecrypt = Encoding.Default.GetString(m_stream.ToArray());
                    m_stream.Close(); m_stream.Dispose();
                    m_csstream.Close(); m_csstream.Dispose();
                }
                catch (IOException ex) { throw ex; }
                catch (CryptographicException ex) { throw ex; }
                catch (ArgumentException ex) { throw ex; }
                catch (Exception ex) { throw ex; }
                finally { m_AESProvider.Clear(); }
                return m_strDecrypt;
            }
    

      之后你只需要提供一个密匙key和你要加密的字符串,调用你写的函数就可以实现AES加密的功能。

  • 相关阅读:
    vue去除#号tomcat配置
    vscode配置
    git忽略想要提交的文件
    vue-cli配置移动端自适应
    远程调试工具 -- weinre
    将博客搬至CSDN
    错误:this dependency was not found:'element-ui/lib/theme-chalk/index.css'。。。。。。。
    win上java1.7和1.8版本修改环境变量无效.md
    mysql 事务
    mysql 函数
  • 原文地址:https://www.cnblogs.com/clownice/p/4518607.html
Copyright © 2011-2022 走看看