php和c#一致的DES加密解密演算法類

來源:互聯網
上載者:User
DES加解密演算法,在C#與PHP中的通用類。

注意:

1、類中的秘鑰key跟向量iv,均用的同樣的值

2、編碼均採用的utf-8

以下為具體代碼,可以直接複製去進行實際測試

C#版代碼:

using System;   using System.Data;   using System.Configuration;   using System.Web;   using System.Web.Security;   using System.Web.UI;   using System.Web.UI.WebControls;   using System.Web.UI.WebControls.WebParts;   using System.Web.UI.HtmlControls;   using System.Data.SqlClient;   using System.Security.Cryptography;   using System.IO;   using System.Text;  //C# 版DES 加解密演算法類public class Des{       //加解密密鑰    private static  string skey = "12345678";#region DESEnCode DES加密   public static string DESEnCode(string pToEncrypt, string sKey)   {   pToEncrypt = HttpContext.Current.Server.UrlEncode(pToEncrypt);   DESCryptoServiceProvider des = new DESCryptoServiceProvider();   byte[] inputByteArray = Encoding.GetEncoding("UTF-8").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();      StringBuilder ret = new StringBuilder();   foreach (byte b in ms.ToArray())   {   ret.AppendFormat("{0:X2}", b);   }   ret.ToString();   return ret.ToString();   }  #endregion  #region DESDeCode DES解密public static string DESDeCode(string pToDecrypt, string sKey){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);MemoryStream ms = new MemoryStream();CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write);cs.Write(inputByteArray, 0, inputByteArray.Length);cs.FlushFinalBlock(); StringBuilder ret = new StringBuilder(); return HttpContext.Current.Server.UrlDecode(System.Text.Encoding.Default.GetString(ms.ToArray()));}    #endregion }     

PHP版代碼:

key = $key;$this->iv = $key; //預設以$key 作為 iv}//加密function encrypt($str) {$size = mcrypt_get_block_size ( MCRYPT_DES, MCRYPT_MODE_CBC );$str = $this->pkcs5Pad ( $str, $size );return strtoupper( bin2hex( mcrypt_cbc(MCRYPT_DES, $this->key, $str, MCRYPT_ENCRYPT, $this->iv ) ) );}//解密function decrypt($str) {$strBin = $this->hex2bin( strtolower( $str ) );$str = mcrypt_cbc( MCRYPT_DES, $this->key, $strBin, MCRYPT_DECRYPT, $this->iv );$str = $this->pkcs5Unpad( $str );return $str;}function hex2bin($hexData) {$binData = "";for($i = 0; $i < strlen ( $hexData ); $i += 2) {$binData .= chr ( hexdec ( substr ( $hexData, $i, 2 ) ) );}return $binData;}function pkcs5Pad($text, $blocksize) {$pad = $blocksize - (strlen ( $text ) % $blocksize);return $text . str_repeat ( chr ( $pad ), $pad );}function pkcs5Unpad($text) {$pad = ord ( $text {strlen ( $text ) - 1} );if ($pad > strlen ( $text ))return false;if (strspn ( $text, chr ( $pad ), strlen ( $text ) - $pad ) != $pad)return false;return substr ( $text, 0, - 1 * $pad );}}header("Content-type: text/html; charset=utf-8");$key = '12345678';$str = 'abc.123';$des = new DES($key);$str_en_des = $des->encrypt($str); //加密字串$str_de_des = $des->decrypt($str_en_des); //解密字串echo '加密字串:',$str,'
';echo '加密秘鑰key:',$key,'

';echo '加密後字串:',$str_en_des,'
';echo '解密後字串:',$str_de_des,'
';?>

代碼均經過網上搜尋進行整理,特別感謝博文:http://blog.csdn.net/e421083458/article/details/39373815

以上就介紹了php和c#一致的DES加密解密演算法類,包括了方面的內容,希望對PHP教程有興趣的朋友有所協助。

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.