zoukankan      html  css  js  c++  java
  • DESCryptoServiceProvider加密、解密

    .net名称空间System.Security.Cryptography下DESCryptoServiceProvider类为我们提供了加密和解密方法,我们只需少许代码便可实现加密和解密。

    稍感不托的地方,如果不是自行加密的在解密时会报错。

    使用注意事项,密钥64位,8个字符。

    定义默认加密密钥

    const string KEY_64 = "ChinabCd";
    const string IV_64 = "ChinabCd";

    加密

    /// <summary>
    /// 按指定键值进行加密
    /// </summary>
    /// <param name="strContent">要加密字符</param>
    /// <param name="strKey">自定义键值</param>
    /// <returns></returns>
    
    public static string EnCrypt(string strContent, string strKey)
    
            {
                if (string.IsNullOrEmpty(strContent)) return string.Empty;
                if (strKey.Length > 8) strKey = strKey.Substring(0, 8); else strKey = KEY_64;
                byte[] byKey = System.Text.ASCIIEncoding.ASCII.GetBytes(strKey);
                byte[] byIV = System.Text.ASCIIEncoding.ASCII.GetBytes(IV_64);
    
                DESCryptoServiceProvider cryptoProvider = new DESCryptoServiceProvider();
                int i = cryptoProvider.KeySize;
                MemoryStream ms = new MemoryStream();
                CryptoStream cst = new CryptoStream(ms, cryptoProvider.CreateEncryptor(byKey, byIV), CryptoStreamMode.Write);
    
                StreamWriter sw = new StreamWriter(cst);
                sw.Write(strContent);
                sw.Flush();
                cst.FlushFinalBlock();
                sw.Flush();
                return Convert.ToBase64String(ms.GetBuffer(), 0, (int)ms.Length);
            }
    View Code

     解密

     /// <summary>
            /// 按指定键值进行解密
            /// </summary>
            /// <param name="strContent">要解密字符</param>
            /// <param name="strKey">加密时使用的键值</param>
            /// <returns></returns>
            public static string DeCrypt(string strContent, string strKey)
            {
                if (string.IsNullOrEmpty(strContent)) return string.Empty;
                if (strKey.Length > 8) strKey = strKey.Substring(0, 8); else strKey = KEY_64;
                byte[] byKey = System.Text.ASCIIEncoding.ASCII.GetBytes(strKey);
                byte[] byIV = System.Text.ASCIIEncoding.ASCII.GetBytes(IV_64);
    
                byte[] byEnc;
                try
                {
                    byEnc = Convert.FromBase64String(strContent);
                }
                catch
                {
                    return null;
                }
    
                DESCryptoServiceProvider cryptoProvider = new DESCryptoServiceProvider();
                MemoryStream ms = new MemoryStream(byEnc);
                CryptoStream cst = new CryptoStream(ms, cryptoProvider.CreateDecryptor(byKey, byIV), CryptoStreamMode.Read);
                StreamReader sr = new StreamReader(cst);
                return sr.ReadToEnd();
            }
    View Code
  • 相关阅读:
    jedisPool.returnBrokenResource 弃用
    错误,各种错误
    Spring加载resource时classpath*:与classpath:的区别
    Embedded database support
    IDEA 中 显示 *.properties 为中文
    Key promoter IDEA 快捷键 提示 插件
    Win7系统怎么删除今日热点【系统天地】
    win10深度清理c盘垃圾的方法【系统天地】
    win7系统如何清理注册表残留
    win10系统文件无法复制到u盘怎么办【系统天地】
  • 原文地址:https://www.cnblogs.com/lucika/p/3480184.html
Copyright © 2011-2022 走看看