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;
         }
    }
  • 相关阅读:
    如何复制百度文库中的文章转的,不用担心下载要币了[转]
    什么是中间件(转)
    android实用代码 (转)
    [Java]读取文件方法大全(转)
    Solaris下查看磁盘、内存、CPU使用程度
    Gene Ontology (GO) 简介
    如何在网上查某个基因的转录因子及启动子
    kmeans k均值聚类的弱点/缺点
    层次聚类
    什么是非负矩阵分解 NMF(Nonnegative Matrix Factorization )
  • 原文地址:https://www.cnblogs.com/flamegreat/p/12195795.html
Copyright © 2011-2022 走看看