zoukankan      html  css  js  c++  java
  • 分享一个加密类和一个解密类

    加密类

     1     internal class CryptInfo
     2     {
     3         /// <summary>
     4         /// 私有构造方法禁止实例化该类型
     5         /// </summary>
     6         public CryptInfo() { }
     7 
     8         /// <summary>
     9         /// 对输入的字符串进行加密,并获取加密后的字符串,调用这个方法
    10         /// </summary>
    11         /// <param name="text">输入的字符串</param>
    12         /// <returns></returns>
    13         public string GetEncrypt(string text)
    14         {
    15             return this.Encrypt(text);
    16         }
    17 
    18         /// <summary>
    19         /// 加密 对用户名和密码进行加密的方法
    20         /// </summary>
    21         /// <param name="text"></param>
    22         /// <returns></returns>
    23         private string Encrypt(string text)
    24         {
    25             Rijndael crypt = Rijndael.Create();
    26             byte[] key = new byte[32] { 0XA6, 0X7D, 0XE1, 0X3F, 0X35, 0X0E, 0XE1, 0XA9, 0X83, 0XA5, 0X62, 0XAA, 0X7A, 0XAE, 0X79, 0X98, 0XA7, 0X33, 0X49, 0XFF, 0XE6, 0XAE, 0XBF, 0X8D, 0X8D, 0X20, 0X8A, 0X49, 0X31, 0X3A, 0X12, 0X40 };
    27 
    28             byte[] iv = new byte[16] { 0XF8, 0X8B, 0X01, 0XFB, 0X08, 0X85, 0X9A, 0XA4, 0XBE, 0X45, 0X28, 0X56, 0X03, 0X42, 0XF6, 0X19 };
    29             crypt.Key = key;
    30             crypt.IV = iv;
    31 
    32             MemoryStream ms = new MemoryStream();
    33 
    34             ICryptoTransform transtormEncode = new ToBase64Transform();
    35             //Base64编码
    36             CryptoStream csEncode = new CryptoStream(ms, transtormEncode, CryptoStreamMode.Write);
    37 
    38             CryptoStream csEncrypt = new CryptoStream(csEncode, crypt.CreateEncryptor(), CryptoStreamMode.Write);
    39 
    40             System.Text.UTF8Encoding enc = new System.Text.UTF8Encoding();
    41             byte[] rawData = enc.GetBytes(text);
    42 
    43             csEncrypt.Write(rawData, 0, rawData.Length);
    44             csEncrypt.FlushFinalBlock();
    45 
    46             byte[] encryptedData = new byte[ms.Length];
    47             ms.Position = 0;
    48             ms.Read(encryptedData, 0, (int)ms.Length);
    49 
    50             return enc.GetString(encryptedData);
    51         }
    52 
    53     }

    解密类:

        internal class DecryptInfo
        {
            /// <summary>
            /// 私有化构造函数不允许外部实例化
            /// </summary>
            public DecryptInfo()
            { }
    
    
            /// <summary>
            /// 对输入的字符串进行加密,并获取解密后的字符串,调用这个方法
            /// </summary>
            /// <param name="text">输入的字符串</param>
            /// <returns></returns>
            public string GetDecrypte(string text)
            {
                return this.Decrypt(text);
            }
    
            /// <summary>
            /// 解密方法 对用户名和密码进行解密
            /// </summary>
            /// <param name="text"></param>
            /// <returns></returns>
            private string Decrypt(string text)
            {
                Rijndael crypt = Rijndael.Create();
                byte[] key = new byte[32] { 0XA6, 0X7D, 0XE1, 0X3F, 0X35, 0X0E, 0XE1, 0XA9, 0X83, 0XA5, 0X62, 0XAA, 0X7A, 0XAE, 0X79, 0X98, 0XA7, 0X33, 0X49, 0XFF, 0XE6, 0XAE, 0XBF, 0X8D, 0X8D, 0X20, 0X8A, 0X49, 0X31, 0X3A, 0X12, 0X40 };
                byte[] iv = new byte[16] { 0XF8, 0X8B, 0X01, 0XFB, 0X08, 0X85, 0X9A, 0XA4, 0XBE, 0X45, 0X28, 0X56, 0X03, 0X42, 0XF6, 0X19 };
                crypt.Key = key;
                crypt.IV = iv;
    
                MemoryStream ms = new MemoryStream();
                CryptoStream csDecrypt = new CryptoStream(ms, crypt.CreateDecryptor(), CryptoStreamMode.Write);
                ICryptoTransform transformDecode = new FromBase64Transform();
                CryptoStream csDecode = new CryptoStream(csDecrypt, transformDecode, CryptoStreamMode.Write);
    
                System.Text.UTF8Encoding enc = new System.Text.UTF8Encoding();
                byte[] rawData = enc.GetBytes(text);
                csDecode.Write(rawData, 0, rawData.Length);
                csDecode.FlushFinalBlock();
    
                byte[] decryptedData = new byte[ms.Length];
                ms.Position = 0;
                ms.Read(decryptedData, 0, (int)ms.Length);
    
                return (enc.GetString(decryptedData));
            }
        }
    

     把其中的UserInfo类换成T,这样就把加密类和解密类变成泛型类,更通用。

  • 相关阅读:
    axios增加的自定义header,后端request取不到
    ExecutorService 线程池 (转发)
    Java ExecutorService四种线程池的例子与说明(转发)
    如何合理地估算线程池大小?(转发)
    什么是CPU密集型、IO密集型?(转发)
    成功的唯一秘诀——坚持最后一分钟
    人生最精彩的不是实现梦想的瞬间,而是坚持梦想的过程
    贵在坚持
    第一个flask程序
    认识web
  • 原文地址:https://www.cnblogs.com/dotnetHui/p/8359430.html
Copyright © 2011-2022 走看看