C# DES加密类,16位的加密。

这个加密类是与java写的DES加密不同时,自己写的,最后与Java的加密相同了,解决了加密后不同的问题。

可以直接调用里面的加密和解密的方法。

using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;



using System.Text;

using System.Security.Cryptography;

using System.IO;



namespace EallNum.Helper

{



    public class FI_DesTools

    {

        private FI_DesTools() 

        {

        } 

 

        private static string key = "×××××"; 

 

        /// <summary> 

        /// 对称加密解密的密钥 

        /// </summary> 

        public static string Key

        { 

            get 

            { 

                return key;

            } 

            set 

            { 

                key = value;

            } 

        } 

 

        /// <summary> 

        /// DES加密 

        /// </summary> 

        /// <param name="encryptString"></param> 

        /// <returns></returns> 

        public static string DesEncrypt(string strEncryptString) 

        {

            StringBuilder strRetValue = new StringBuilder();



            try

            {

                byte[] keyBytes = Encoding.UTF8.GetBytes(key.Substring(0, 8)); 

                byte[] keyIV = keyBytes;

                byte[] inputByteArray = Encoding.UTF8.GetBytes(strEncryptString); 

                DESCryptoServiceProvider provider = new DESCryptoServiceProvider();

            

                provider.Mode = CipherMode.ECB;//兼容其他语言的Des加密算法  

                provider.Padding = PaddingMode.Zeros;//自动补0

                          

                MemoryStream mStream = new MemoryStream(); 

                CryptoStream cStream = new CryptoStream(mStream, provider.CreateEncryptor(keyBytes, keyIV), CryptoStreamMode.Write); 

                cStream.Write(inputByteArray, 0, inputByteArray.Length); 

                cStream.FlushFinalBlock(); 



                //不使用base64编码

                //return Convert.ToBase64String(mStream.ToArray()); 



                //组织成16进制字符串            

                foreach (byte b in mStream.ToArray())

                {

                    strRetValue.AppendFormat("{0:X2}", b);

                }

            }

            catch (Exception e)

            {

                Console.WriteLine(e);

            }



            return strRetValue.ToString();

        } 

 

        /// <summary> 

        /// DES解密 

        /// </summary> 

        /// <param name="decryptString"></param> 

        /// <returns></returns>         

        public static string DesDecrypt(string strDecryptString)

        {

            string strRetValue = "";



            try

            {   

                byte[] keyBytes = Encoding.UTF8.GetBytes(key.Substring(0, 8));

                byte[] keyIV = keyBytes;



                //不使用base64解码

                //byte[] inputByteArray = Convert.FromBase64String(decryptString);



                //16进制转换为byte字节

                byte[] inputByteArray = new byte[strDecryptString.Length / 2];

                for (int x = 0; x < strDecryptString.Length / 2; x++)

                {

                    int i = (Convert.ToInt32(strDecryptString.Substring(x * 2, 2), 16));

                    inputByteArray[x] = (byte)i;

                }



                DESCryptoServiceProvider provider = new DESCryptoServiceProvider();



                provider.Mode = CipherMode.ECB;//兼容其他语言的Des加密算法  

                provider.Padding = PaddingMode.Zeros;//自动补0  



                MemoryStream mStream = new MemoryStream();

                CryptoStream cStream = new CryptoStream(mStream, provider.CreateDecryptor(keyBytes, keyIV), CryptoStreamMode.Write);

                cStream.Write(inputByteArray, 0, inputByteArray.Length);

                cStream.FlushFinalBlock();



                //需要去掉结尾的null字符

                //strRetValue = Encoding.UTF8.GetString(mStream.ToArray());

                strRetValue = Encoding.UTF8.GetString(mStream.ToArray()).TrimEnd('\0');

            }

            catch (Exception e)

            {

                Console.WriteLine(e);

            }

            

            return strRetValue;

        }

    }

}

 

你可能感兴趣的:(des)