PHP 3DES加密演算法實現

巴扎黑
發布: 2016-11-21 13:49:36
原創
2549 人瀏覽過

最近需要在做的東西,php回傳一個3des加密的url給.net,然後.net端解密。 php的實作一直無法和.net端相符起來,先記在這裡,希望看到的大神指點。網路上無數照抄照搬的人,根本沒有親身驗證過,希望大家以後能秉承嚴謹的方式。

 

PHP加密擴充庫Mcrypt對資料加密解密之前,先建立了一個初始化向量,簡稱iv。由 $iv = mcrypt_create_iv(mcrypt_get_iv_size($cipher,$modes),MCRYPT_RAND);可見建立初始化 向 量需要兩個參數:size指定了iv的大小;source為iv的來源,其中值MCRYPT_RAND為系統隨機數。

函數mcrypt_get_iv_size($cipher,$modes)傳回初始化向量大小,參數cipher和mode分別指演算法和加 密模式。

 

Php代碼  

function encrypt($input){//数据加密  
 $key=md5("XXXXXXXXX",TRUE);  
 $key=base64_encode($key);  
 $size = mcrypt_get_block_size(MCRYPT_3DES,MCRYPT_MODE_ECB);  
 $input = $this->pkcs5_pad($input, $size);  
 //$key = str_pad($this->key,24,'0');  
 $key = str_pad($key,24,'0');  
 $td = mcrypt_module_open(MCRYPT_3DES, '', MCRYPT_MODE_ECB, '');  
// $iv = @mcrypt_create_iv (mcrypt_enc_get_iv_size($td), MCRYPT_RAND);//初始化向量  
$iv = mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_3DES,MCRYPT_MODE_ECB), MCRYPT_RAND);  
 @mcrypt_generic_init($td, $key, $iv);  
 $data = mcrypt_generic($td, $input);  
 mcrypt_generic_deinit($td);  
 mcrypt_module_close($td);  
 //    $data = base64_encode($this->PaddingPKCS7($data));  
 $data = base64_encode($data);  
 return  $data;  
 }
登入後複製

Php代碼  

function pkcs5_pad ($text, $blocksize) {  
$pad = $blocksize - (strlen($text) % $blocksize);  
return $text . str_repeat(chr($pad), $pad);  
}
登入後複製

 .net側的代碼實現如下:

php

Php代碼  

var des = new TripleDESCryptoServiceProvider();  
             var hashMd5 = new MD5CryptoServiceProvider();  
  
             des.Key = hashMd5.ComputeHash(Encoding.Default.GetBytes(strKey));  
             des.Mode = CipherMode.ECB;  
             des.Padding = PaddingMode.Zeros;  
  
             var desEncrypt = des.CreateEncryptor();  
             var buffer = Encoding.Default.GetBytes(strString);  
             return Convert.ToBase64String(desEncrypt.TransformFinalBlock(buffer, 0, buffer.Length));
登入後複製

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板