好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > php DES加密算法實例分析

php DES加密算法實例分析

熱門標(biāo)簽:長春人工外呼系統(tǒng)服務(wù)商 廣東地市地圖標(biāo)注 哪里辦理400電話 高德地圖標(biāo)注家 廣州防封卡外呼系統(tǒng)多少錢一個月 仁和怎么申請400開頭的電話 外呼系統(tǒng)撥打暫時無法接通 怎么向銷售公司推銷外呼系統(tǒng) 江西手機(jī)自動外呼防封系統(tǒng)是什么

本文實例講述了php DES加密算法。分享給大家供大家參考,具體如下:

yii框架的DES代碼

?php
/**
 *@see Yii CSecurityManager;
 */
class Des{
 public static function encrypt($data,$key){
   $module=mcrypt_module_open('des','', MCRYPT_MODE_CBC,'');
   $key=substr(md5($key),0,mcrypt_enc_get_key_size($module));
   srand();
   $iv=mcrypt_create_iv(mcrypt_enc_get_iv_size($module), MCRYPT_RAND);
   mcrypt_generic_init($module,$key,$iv);
   $encrypted=$iv.mcrypt_generic($module,$data);
   mcrypt_generic_deinit($module);
   mcrypt_module_close($module);
   return md5($data).'_'.base64_encode($encrypted);
 }
 public static function decrypt($data,$key){  
   $_data = explode('_',$data,2);
   if(count($_data)2){
    return false;
   }
   $data = base64_decode($_data[1]);   
   $module=mcrypt_module_open('des','', MCRYPT_MODE_CBC,'');
   $key=substr(md5($key),0,mcrypt_enc_get_key_size($module));
   $ivSize=mcrypt_enc_get_iv_size($module);
   $iv=substr($data,0,$ivSize);
   mcrypt_generic_init($module,$key,$iv);
   $decrypted=mdecrypt_generic($module,substr($data,$ivSize,strlen($data)));
   mcrypt_generic_deinit($module);
   mcrypt_module_close($module);
   $decrypted = rtrim($decrypted,"\0");    
   if($_data[0]!=md5($decrypted)){
    return false;
   }
   return $decrypted;
 }
}

在網(wǎng)上看到了一篇文章,講到:

由于PHP使用mcrypt擴(kuò)展進(jìn)行3DES加密,填充模式是跟JAVA以及.NET是不一樣的,JAVA和.NET填充模式使用的是PKCS7。

所以PHP端必須自定義一個函數(shù)對加密字符串進(jìn)行PKCS7模式補位填充。

另外一點就是雙方的KEY注意進(jìn)行base64編碼,最后PHP端經(jīng)過3DES加密后得到的結(jié)果也需要進(jìn)行base64編碼。

以上幾點都做好之后,加密結(jié)果就一致了。

下面是兼容C#和java的3DES加密的算法

?php
class STD3Des
{
  private $key = "";
  private $iv = "";
  /**
  * 構(gòu)造,傳遞二個已經(jīng)進(jìn)行base64_encode的KEY與IV
  *
  * @param string $key
  * @param string $iv
  */
  function __construct ($key, $iv)
  {
    if (empty($key) || empty($iv)) {
      echo 'key and iv is not valid';
      exit();
    }
    $this->key = $key;
    $this->iv = $iv;
  }
  /**
  *加密
  * @param type> $value
  * @return type>
  */
  public function encrypt ($value)
  {
    $td = mcrypt_module_open(MCRYPT_3DES, '', MCRYPT_MODE_CBC, '');
    $iv = base64_decode($this->iv);
    $value = $this->PaddingPKCS7($value);
    $key = base64_decode($this->key);
    mcrypt_generic_init($td, $key, $iv);
    $ret = base64_encode(mcrypt_generic($td, $value));
    mcrypt_generic_deinit($td);
    mcrypt_module_close($td);
    return $ret;
  }
  /**
  *解密
  * @param type> $value
  * @return type>
  */
  public function decrypt ($value)
  {
    $td = mcrypt_module_open(MCRYPT_3DES, '', MCRYPT_MODE_CBC, '');
    $iv = base64_decode($this->iv);
    $key = base64_decode($this->key);
    mcrypt_generic_init($td, $key, $iv);
    $ret = trim(mdecrypt_generic($td, base64_decode($value)));
    $ret = $this->UnPaddingPKCS7($ret);
    mcrypt_generic_deinit($td);
    mcrypt_module_close($td);
    return $ret;
  }
  private function PaddingPKCS7 ($data)
  {
    $block_size = mcrypt_get_block_size('tripledes', 'cbc');
    $padding_char = $block_size - (strlen($data) % $block_size);
    $data .= str_repeat(chr($padding_char), $padding_char);
    return $data;
  }
  private function UnPaddingPKCS7($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);
  }
}
?>

PS:關(guān)于加密解密感興趣的朋友還可以參考本站在線工具:

在線DES加密/解密工具
http://tools.jb51.net/password/des_encode

MD5在線加密工具:
http://tools.jb51.net/password/CreateMD5Password

在線散列/哈希算法加密工具:
http://tools.jb51.net/password/hash_encrypt

在線MD5/hash/SHA-1/SHA-2/SHA-256/SHA-512/SHA-3/RIPEMD-160加密工具:
http://tools.jb51.net/password/hash_md5_sha

在線sha1/sha224/sha256/sha384/sha512加密工具:
http://tools.jb51.net/password/sha_encode

更多關(guān)于PHP相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《php加密方法總結(jié)》、《PHP編碼與轉(zhuǎn)碼操作技巧匯總》、《PHP數(shù)學(xué)運算技巧總結(jié)》、《PHP數(shù)組(Array)操作技巧大全》、《php字符串(string)用法總結(jié)》、《PHP數(shù)據(jù)結(jié)構(gòu)與算法教程》、《php程序設(shè)計算法總結(jié)》及《php正則表達(dá)式用法總結(jié)》

希望本文所述對大家PHP程序設(shè)計有所幫助。

您可能感興趣的文章:
  • PHP實現(xiàn)基于3DES算法加密解密字符串示例
  • PHP對稱加密算法(DES/AES)類的實現(xiàn)代碼
  • php實現(xiàn)和c#一致的DES加密解密實例
  • PHP實現(xiàn)的DES加密解密封裝類完整實例
  • PHP簡單實現(xiàn)DES加密解密的方法
  • PHP中加密解密函數(shù)與DES加密解密實例
  • 兼容PHP和Java的des加密解密代碼分享
  • 如何通過PHP實現(xiàn)Des加密算法代碼實例

標(biāo)簽:鷹潭 赤峰 迪慶 三亞 烏魯木齊 濟(jì)寧 山南 南寧

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《php DES加密算法實例分析》,本文關(guān)鍵詞  php,DES,加密,算法,實例分析,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《php DES加密算法實例分析》相關(guān)的同類信息!
  • 本頁收集關(guān)于php DES加密算法實例分析的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    主站蜘蛛池模板: 色婷婷久久一区二区三区麻豆 | 国产00学生粉嫩馒头在线播放 | 好湿?好紧?好多水c| 欧美男男videos在线| 不许穿内裤夹住不许掉下来| 99热在线免费| 女主奶大溢奶NP高H| 稚嫩娇小哭叫粗大撑破h| 任你躁欧美一级在线精品免费| 噼里啪啦免费观看高清完整版| 大色综合色综合资源站| 一级做α爱过程免费视频| 免费国产欧美国日产A片| 国产播放啪视频免费视频| 麻豆国产欧美日韩综合精品二区| 免费的黄色| 欧美18一19性处交| 美女被狂揉下部漫画| 老湿看A片做爰| 喜爱夜蒲3尺度吸乳| 日本乱淫视频| 午夜福利伦妓片A片AAA小说| 91av在线免费视频| 中文字日产乱幕六区| 8x8ⅹ拔擦拔擦在线播放| 男女XXOO做爰猛烈动图片漫画| 婷婷色国产偷v国产偷v| after之后在线高清免费观看| 国产一级a毛一级a做免费图片| 成人毛片18女人A片| narutoandhinatapixxx足控网| 欧美激情成人网| 十大黄软件| 小说区图片区综合久久亚洲| 吸乳漫画| 欧美高清在线精品一区二区不卡| a电影在线观看| 无遮挡最爽男女激烈动态图| 人妻丝袜av先锋影音先锋下载| 女仆白丝到爽??高潮痉挛机器 | 国产又爽?又黄?在线|