.net C# ADC介面中DES密碼編譯演算法

來源:互聯網
上載者:User

原文檔密碼編譯演算法描述如下:

 

1.1      訊息安全性

Des加密保證訊息的不可閱讀性。

對訊息的密碼編譯演算法:Base64(DES(MD5(訊息體) + 訊息體))

訊息採用的DES密碼編譯演算法規則如下:

1.密鑰是一個長度16、由16進位字元組成的字串,如:1234567890ABCDEF

使用時,相臨的兩位理解為一個16進位數的明文,然後轉換為實際使用的8位密鑰

2. 待加密資料按照PKCS5規則進行補位。(缺7位補7個0x07,缺6位則補6個0x06,以次類推,如果正好8位,也需要補8個0x08)

3. 實際加密模式選擇DES-ECB

4. 經過DES加密後的資料必須通過Base64編碼轉換為明文的字串

華為提示java的jar包,但.net 方面是沒有方法,網上查詢了很多,des方法有很多,加密結果不一樣,經常仔細閱讀密碼編譯演算法,終於實現在,提供給大家

 

代碼

using System;
using System.Text;
using System.ComponentModel;
using System.Collections;
using System.Security;
using System.Security.Cryptography;
using System.Diagnostics;
using System.IO;
namespace AdcLib.Util
{
    ///   <summary> 
    ///   Class1   的摘要說明。 
    ///   </summary> 
    public class SecurityUtil     //加密解密類 
    {

       

        ///   <summary> 
        ///   3des加密字串 
        ///   </summary> 
        ///   <param   name= "a_strString "> 要加密的字串 </param> 
        ///   <param   name= "a_strKey "> 密鑰 </param> 
        ///   <returns> 加密後並經base64編碼的字串 </returns> 
        ///   <remarks> 靜態方法,採用預設ascii編碼 </remarks> 
        public static string EncryptDES(string a_strString, string a_strKey)
        {
            DESCryptoServiceProvider DES = new DESCryptoServiceProvider();
            
            //TripleDESCryptoServiceProvider DES = new TripleDESCryptoServiceProvider();
            //MD5CryptoServiceProvider hashMD5 = new MD5CryptoServiceProvider();
           byte[] b = strToToHexByte(a_strKey);

            DES.Key = b;
           // DES.IV = b;
          //  DES.Key = b;//ASCIIEncoding.ASCII.GetBytes(a_strKey);//hashMD5.ComputeHash(ASCIIEncoding.ASCII.GetBytes(a_strKey));
            DES.Mode = CipherMode.ECB;
            DES.Padding = PaddingMode.PKCS7;
          

          
            ICryptoTransform DESEncrypt = DES.CreateEncryptor();

            byte[] Buffer = ASCIIEncoding.UTF8.GetBytes(a_strString);
            return Convert.ToBase64String(DESEncrypt.TransformFinalBlock(Buffer, 0, Buffer.Length));
        }//end   method 

        private static byte[] strToToHexByte(string hexString)
        {
            byte[] returnBytes = new byte[hexString.Length / 2];
            for (int i = 0; i < returnBytes.Length; i++)
                returnBytes[i] = Convert.ToByte(hexString.Substring(i * 2, 2),16);
            return returnBytes;
        }

    

        ///   <summary> 
        ///   3des解密字串 
        ///   </summary> 
        ///   <param   name= "a_strString "> 要解密的字串 </param> 
        ///   <param   name= "a_strKey "> 密鑰 </param> 
        ///   <returns> 解密後的字串 </returns> 
        ///   <exception   cref= " "> 密鑰錯誤 </exception> 
        ///   <remarks> 靜態方法,採用預設ascii編碼 </remarks> 
        public static string DecryptDES(string a_strString, string a_strKey)
        {
            DESCryptoServiceProvider DES = new DESCryptoServiceProvider();

            DES.Key = strToToHexByte(a_strKey);
            DES.Mode = CipherMode.ECB;
            DES.Padding = PaddingMode.PKCS7;

            ICryptoTransform DESDecrypt = DES.CreateDecryptor();

            string result = " ";
            try
            {
                byte[] Buffer = Convert.FromBase64String(a_strString);
                result = ASCIIEncoding.UTF8.GetString(DESDecrypt.TransformFinalBlock(Buffer, 0, Buffer.Length));
            }
            catch (Exception e)
            {

                throw (new Exception("Invalid   Key   or   input   string   is   not   a   valid   base64   string ", e));
            }

            return result;
        }//end   method 

    
        /// <summary>
        /// MD5
        /// </summary>
        /// <param name="data"></param>
        /// <returns></returns>
        public static string MD5(string data)
        {
            System.Security.Cryptography.MD5CryptoServiceProvider md5 = new System.Security.Cryptography.MD5CryptoServiceProvider();
            return BitConverter.ToString(md5.ComputeHash(Encoding.UTF8.GetBytes(data))).Replace("-", "").ToLower();
        }

    

    }
}

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.