zoukankan      html  css  js  c++  java
  • C#中的DES加密

    using System;
    using System.Security.Cryptography;
    using System.IO;
    using System.Text;

    namespace Interact.TeleSales
    {
    /// <summary>
    /// DesUtil 的摘要说明。
    /// </summary>
    public class DesUtil
    {
    public DesUtil()
    {
    }

    //解密方法
    public static string Decrypt(string data,string key)
    {
    //一般为从Base64转换,此处不是
    byte[] buf = Encoding.UTF8.GetBytes(data);
    int len = data.Length;
    byte[] inputByteArray = new byte[len / 2];
    for(int i = 0; i < len; i = i + 2)
    {
    string tmp = ASCIIEncoding.ASCII.GetString(buf, i, 2);
    inputByteArray[i/2] = (byte)Convert.ToInt32(tmp, 16);
    }
    //byte[] inputByteArray = Convert.FromBase64String(data);

    DESCryptoServiceProvider des = new DESCryptoServiceProvider();
    // java 默认的是ECB模式,PKCS5padding;c#默认的CBC模式,PKCS7padding 所以这里我们默认使用ECB方式
    des.Mode = CipherMode.ECB;
    des.Key = UTF8Encoding.UTF8.GetBytes(key);

    try
    {
    MemoryStream ms = new MemoryStream();
    CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write);
    cs.Write(inputByteArray, 0, inputByteArray.Length);
    cs.FlushFinalBlock();

    return Encoding.UTF8.GetString(ms.ToArray());
    }
    catch
    {
    return "";
    }
    }
    //加密方法
    public static string Encrypt(string data,string key)
    {
    byte[] inputByteArray = Encoding.UTF8.GetBytes(data);
    DESCryptoServiceProvider desProvider = new DESCryptoServiceProvider();

    // java 默认的是ECB模式,PKCS5padding;c#默认的CBC模式,PKCS7padding 所以这里我们默认使用ECB方式
    desProvider.Mode = CipherMode.ECB;
    desProvider.Key = UTF8Encoding.UTF8.GetBytes(key);
    MemoryStream memStream = new MemoryStream();
    CryptoStream crypStream = new CryptoStream(memStream, desProvider.CreateEncryptor(), CryptoStreamMode.Write);

    crypStream.Write(inputByteArray, 0, inputByteArray.Length);
    crypStream.FlushFinalBlock();

    byte[] outputByteArray = memStream.ToArray();
    //一般为转换为Base64,此处不是
    //string ret = Convert.ToBase64String(outputByteArray);

    int len = outputByteArray.Length;
    StringBuilder strout = new StringBuilder();
    for(int i = 0; i<len; i++)
    {
    strout.AppendFormat("{0:X2}", outputByteArray[i]);
    }
    return strout.ToString();
    }
    }
    }

    我是代码搬运工!!!
  • 相关阅读:
    吴恩达-coursera-机器学习-week7
    吴恩达-coursera-机器学习-week4
    吴恩达-coursera-机器学习-week3
    吴恩达-coursera-机器学习-week2
    吴恩达-coursera-机器学习-week1
    Sqlserver实现故障转移 — 故障转移群集仲裁之DFS共享文件夹仲裁
    Sqlserver实现故障转移 — 辅助域控
    Sqlserver 查询数据库连接数
    Unable to preventDefault inside passive event listener
    记:倍福(CP2611 Control Panel)了解
  • 原文地址:https://www.cnblogs.com/FanKL/p/13528822.html
Copyright © 2011-2022 走看看