程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C# DES加密類,16位的加密。,

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

編輯:C#入門知識

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;
        }
    }
}

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved