zoukankan      html  css  js  c++  java
  • C# DES加密、解密

    /// <summary>
    /// DES加密字符串
    /// </summary>
    /// <param name="pToEncrypt">待加密的字符串</param>
    /// <param name="sKey">加密密钥,要求为8位</param>
    /// <returns>加密成功返回加密后的字符串,失败返回源串</returns>
    public static string DesEncrypt(string pToEncrypt, string sKey)
    {
         StringBuilder ret = new StringBuilder();
         try
         {
             DESCryptoServiceProvider des = new DESCryptoServiceProvider();
             byte[] inputByteArray = Encoding.Default.GetBytes(pToEncrypt);
             des.Key = ASCIIEncoding.ASCII.GetBytes(sKey);
             des.IV = ASCIIEncoding.ASCII.GetBytes(sKey);
             MemoryStream ms = new MemoryStream();
             CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(),CryptoStreamMode.Write);
             cs.Write(inputByteArray, 0, inputByteArray.Length);
             cs.FlushFinalBlock();
             foreach (byte b in ms.ToArray())
             {
                 ret.AppendFormat("{0:X2}", b);
             }
             return ret.ToString();
         }
         catch
         {
             return pToEncrypt;
         }
    }
    /// <summary>
    /// DES解密字符串
    /// </summary>
    /// <param name="pToDecrypt">待解密的字符串</param>
    /// <param name="sKey">解密密钥,要求为8位,和加密密钥相同</param>
    /// <returns>解密成功返回解密后的字符串,失败返源串</returns>
    public static string DesDecrypt(string pToDecrypt, string sKey)
    {
         MemoryStream ms = new MemoryStream();
         try
         {
             DESCryptoServiceProvider des = new DESCryptoServiceProvider();
             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;
             }
             des.Key = ASCIIEncoding.ASCII.GetBytes(sKey);
             des.IV = ASCIIEncoding.ASCII.GetBytes(sKey);
             CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write);
             cs.Write(inputByteArray, 0, inputByteArray.Length);
             cs.FlushFinalBlock();
             return System.Text.Encoding.Default.GetString(ms.ToArray());
         }
         catch
         {
             return pToDecrypt;
         }
    }
  • 相关阅读:
    掩膜操作手写+API(第二天)
    图像的加载+修改+显示+保存(第一天)
    VS2015+Opencv半永久配置
    关于QT中“崩溃”问题
    关于QT内部16进制、十进制、QByteArray,QString
    QT按键(Qbutton)改变颜色
    QT中使用自己定的类和Vector出现错误
    Spring Boot 集成Jsp与生产环境部署
    SpringBoot入门篇--关于properties和yml两种配置文件的一些事情
    简单的linux使用命令
  • 原文地址:https://www.cnblogs.com/flamegreat/p/12195795.html
Copyright © 2011-2022 走看看