• 利用CryptoStream进行加密解密


     public class DBSecurity
        {
           //sKey sIV这两个自己随意设定,不能外泄
            private const string sKey = "11,22,33,43,34,56,65,78";
            private const string sIV = "12,23,21,34,65,56,85,96";
            # region 加密解密
            //方法 
            //加密方法 
            public static string Encrypt(string pToEncrypt)
            {
                try
                {
                    DESCryptoServiceProvider des = new DESCryptoServiceProvider();
                    //把字符串放到byte数组中             
                    byte[] inputByteArray = Encoding.Default.GetBytes(pToEncrypt);
    
                    //建立加密对象的密钥和偏移量
    
                    byte[] b_key = new byte[8];
                    string[] s_keys = new string[8];
                    s_keys = sKey.Split(',');
    
    
                    for (int i = 0; i <= 7; i++)
                    {
                        b_key[i] = Convert.ToByte(s_keys[i].ToString());
                    }
    
                    des.Key = b_key;
    
                    byte[] b_iv = new byte[8];
                    string[] s_ivs = new string[8];
                    s_ivs = sIV.Split(',');
    
    
                    for (int i = 0; i <= 7; i++)
                    {
                        b_iv[i] = Convert.ToByte(s_ivs[i].ToString());
                    }
    
                    des.IV = b_iv;
    
    
                    MemoryStream ms = new MemoryStream();
                    CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write);
                    //Write the byte array into the crypto stream 
                    //(It will end up in the memory stream) 
                    cs.Write(inputByteArray, 0, inputByteArray.Length);
                    cs.FlushFinalBlock();
                    //Get the data back from the memory stream, and into a string 
                    StringBuilder ret = new StringBuilder();
                    foreach (byte b in ms.ToArray())
                    {
                        //Format as hex 
                        ret.AppendFormat("{0:X2}", b);
                    }
                    ret.ToString();
                    return ret.ToString();
                }
                catch
                {
                    return "";
                }
    
            }
    
    
            //解密方法 
            public static string Decrypt(string pToDecrypt)
            {
                try
                {
                    DESCryptoServiceProvider des = new DESCryptoServiceProvider();
    
                    //Put the input string into the byte array 
                    byte[] inputByteArray = new byte[pToDecrypt.Length / 2];
                    for (int x = 0; x < pToDecrypt.Length / 2; x++)
                    {
                        int i = (Convert.ToInt32(pToDecrypt.Substring(x * 2, 2), 16));
                        inputByteArray[x] = (byte)i;
                    }
    
                    //建立加密对象的密钥和偏移量,此值重要,不能修改 
                    byte[] b_key = new byte[8];
                    string[] s_keys = new string[8];
                    s_keys = sKey.Split(',');
    
    
                    for (int i = 0; i <= 7; i++)
                    {
                        b_key[i] = Convert.ToByte(s_keys[i].ToString());
                    }
    
                    des.Key = b_key;
    
                    byte[] b_iv = new byte[8];
                    string[] s_ivs = new string[8];
                    s_ivs = sIV.Split(',');
    
    
                    for (int i = 0; i <= 7; i++)
                    {
                        b_iv[i] = Convert.ToByte(s_ivs[i].ToString());
                    }
    
                    des.IV = b_iv;
    
    
                    MemoryStream ms = new MemoryStream();
                    CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write);
                    //Flush the data through the crypto stream into the memory stream 
                    cs.Write(inputByteArray, 0, inputByteArray.Length);
                    cs.FlushFinalBlock();
    
                    //Get the decrypted data back from the memory stream 
                    //建立StringBuild对象,CreateDecrypt使用的是流对象,必须把解密后的文本变成流对象 
                    StringBuilder ret = new StringBuilder();
    
                    return System.Text.Encoding.Default.GetString(ms.ToArray());
                }
                catch (Exception exp)
                {
                    string s = exp.Message.ToString();
                    return "";
                }
            }
    
    
            #endregion
        }
  • 相关阅读:
    cmake问题解决汇总
    windows系统安装tree命令
    gcc请求或抑制警告的选项
    React训练营:GraphQL 与CRUD的故事
    React训练营:基本元素的使用与状态管理
    React训练营:Advanced React Hooks:useContext与useReducer
    数据库上云实践:使用Ora2pg进行数据库迁移
    算法训练营:滑动窗口的解释与构造
    数据库进阶之路:常见例题
    ERROR: Could not determine java version from 'JavaVersion.VERSION_1_8'.
  • 原文地址:https://www.cnblogs.com/zhouxiuquan/p/3435007.html
Copyright © 2020-2023  润新知