亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

PHP實現(xiàn)的DES加密解密類定義與用法示例

 更新時間:2020年11月02日 14:12:04   作者:編程愛好者之家  
這篇文章主要介紹了PHP實現(xiàn)的DES加密解密類定義與用法,結合實例形式分析了基于php定義的DES加密解密類與具體使用方法,需要的朋友可以參考下

本文實例講述了PHP實現(xiàn)的DES加密解密類定義與用法。分享給大家供大家參考,具體如下:

今天寫App接口的時候需要傳遞加密數(shù)據(jù)給APP端,于是就寫了下面的DES加密類,親測正確代碼如下

class CryptDes {
 function __construct(){
  $this->key = 'codelovers'; //密鑰
  $this->iv = '15548632'; //偏移量
 }
 /*
  * 加密
  */
 function encrypt($input){
  $size = mcrypt_get_block_size(MCRYPT_DES,MCRYPT_MODE_CBC); //3DES加密將MCRYPT_DES改為MCRYPT_3DES
  $input = $this->pkcs5_pad($input, $size); //如果采用PaddingPKCS7,請更換成PaddingPKCS7方法。
  $key = str_pad($this->key,8,'0'); //3DES加密將8改為24
  $td = mcrypt_module_open(MCRYPT_DES, '', MCRYPT_MODE_CBC, '');
  if( $this->iv == '' )
  {
   $iv = @mcrypt_create_iv (mcrypt_enc_get_iv_size($td), MCRYPT_RAND);
  }
  else
  {
   $iv = $this->iv;
  }
  @mcrypt_generic_init($td, $key, $iv);
  $data = mcrypt_generic($td, $input);
  mcrypt_generic_deinit($td);
  mcrypt_module_close($td);
  $data = base64_encode($data);//如需轉換二進制可改成 bin2hex 轉換
  return $data;
 }
 /*
  * 解密
  */
 function decrypt($encrypted){
  $encrypted = base64_decode($encrypted); //如需轉換二進制可改成 bin2hex 轉換
  $key = str_pad($this->key,8,'0'); //3DES加密將8改為24
  $td = mcrypt_module_open(MCRYPT_DES,'',MCRYPT_MODE_CBC,'');//3DES加密將MCRYPT_DES改為MCRYPT_3DES
  if( $this->iv == '' )
  {
   $iv = @mcrypt_create_iv (mcrypt_enc_get_iv_size($td), MCRYPT_RAND);
  }
  else
  {
   $iv = $this->iv;
  }
  $ks = mcrypt_enc_get_key_size($td);
  @mcrypt_generic_init($td, $key, $iv);
  $decrypted = mdecrypt_generic($td, $encrypted);
  mcrypt_generic_deinit($td);
  mcrypt_module_close($td);
  $y=$this->pkcs5_unpad($decrypted);
  return $y;
 }
 function pkcs5_pad ($text, $blocksize) {
  $pad = $blocksize - (strlen($text) % $blocksize);
  return $text . str_repeat(chr($pad), $pad);
 }
 function pkcs5_unpad($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);
 }
 function PaddingPKCS7($data) {
  $block_size = mcrypt_get_block_size(MCRYPT_DES, MCRYPT_MODE_CBC);//3DES加密將MCRYPT_DES改為MCRYPT_3DES
  $padding_char = $block_size - (strlen($data) % $block_size);
  $data .= str_repeat(chr($padding_char),$padding_char);
  return $data;
 }
}

用法如下:

$str = 'chabaoo.cn';
$des = new CryptDes();
$mres = $des->encrypt($str); //加密
echo $mres."<br/>";
$jres = $des->decrypt($mres); //解密
echo $jres."<br/>";

運行結果:

TxqbmhK86YWdTtTAQoDOqA==
chabaoo.cn

附錄:php7 des加密解密

以下內(nèi)容轉自:https://blog.csdn.net/qq_35979073/article/details/81449590

1.在linux 環(huán)境中如果沒有裝encrypt擴展 或者php版本大于7.1不支持encrypt加密擴展

  可以使用openssl加密擴展

下面是封裝的加密和解密的方法可直接調(diào)用

/**
 * des-ecb加密
 * @param string $data 要被加密的數(shù)據(jù)
 * @param string $key 加密密鑰(64位的字符串)
 */
function des_ecb_encrypt($data, $key){
  return openssl_encrypt ($data, 'des-ecb', $key);
}
 
/**
 * des-ecb解密
 * @param string $data 加密數(shù)據(jù)
 * @param string $key 加密密鑰
 */
function des_ecb_decrypt ($data, $key){
  return openssl_decrypt ($data, 'des-ecb', $key);
}

說明: $key 加密密鑰(64位的字符串)  自己定義的

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

在線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

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

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

相關文章

  • PHP進階學習之Geo的地圖定位算法詳解

    PHP進階學習之Geo的地圖定位算法詳解

    這篇文章主要介紹了PHP進階學習之Geo的地圖定位算法,結合實例形式詳細分析了php Geo的地圖定位算法相關概念、原理、實現(xiàn)方法與操作注意事項,需要的朋友可以參考下
    2019-06-06
  • PHP遞歸寫入MySQL實現(xiàn)無限級分類數(shù)據(jù)操作示例

    PHP遞歸寫入MySQL實現(xiàn)無限級分類數(shù)據(jù)操作示例

    這篇文章主要介紹了PHP遞歸寫入MySQL實現(xiàn)無限級分類數(shù)據(jù)操作,涉及mysql數(shù)據(jù)庫的創(chuàng)建以及php遞歸寫入、讀取數(shù)據(jù)庫分類相關操作技巧,需要的朋友可以參考下
    2018-07-07
  • PHP遞歸復制、移動目錄的自定義函數(shù)分享

    PHP遞歸復制、移動目錄的自定義函數(shù)分享

    這篇文章主要介紹了PHP遞歸復制、移動目錄的自定義函數(shù)分享,本文的特點是對每一句代碼都做詳盡的注釋,需要的朋友可以參考下
    2014-11-11
  • 用PHP調(diào)用Oracle存儲過程的方法

    用PHP調(diào)用Oracle存儲過程的方法

    php程序訪問數(shù)據(jù)庫,完全可以使用存儲過程,有人認為使用存儲過程便于維護。不過仁者見仁,智者見智,在這個問題上,偶認為使用存儲過程意味著必須要dba和開發(fā)人員更緊密配合,如果其中一方更變,則顯然難以維護。
    2008-09-09
  • 理解php Hash函數(shù),增強密碼安全

    理解php Hash函數(shù),增強密碼安全

    服務器和數(shù)據(jù)庫的資料偶爾會被竊取,因此需要保證發(fā)生這種情況時一些重要的用戶數(shù)據(jù),比如密碼,是別人無法獲取的。這里我們將要討論Hash的原理,以及它是如何保護Web應用程序中的密碼安全的。
    2011-02-02
  • 騰訊微博提示missing parameter errorcode 102 錯誤的解決方法

    騰訊微博提示missing parameter errorcode 102 錯誤的解決方法

    這篇文章主要介紹了騰訊微博提示missing parameter errorcode 102 錯誤的解決方法,是針對騰訊微博接口開發(fā)中比較典型的錯誤問題,需要的朋友可以參考下
    2014-12-12
  • php下使用strpos需要注意 === 運算符

    php下使用strpos需要注意 === 運算符

    首先應該知道 strpos 函數(shù)可能返回布爾值 FALSE,但也可能返回一個與 FALSE 等值的非布爾值,例如 0 或者""。我們應使用 === 運算符來測試本函數(shù)的返回值。
    2010-07-07
  • 深入解析PHP中的(偽)多線程與多進程

    深入解析PHP中的(偽)多線程與多進程

    本篇文章是對PHP中的(偽)多線程與多進程進行了詳細的分析介紹,需要的朋友參考下
    2013-07-07
  • PHP 使用openssl 擴展實現(xiàn)公鑰加密的方法

    PHP 使用openssl 擴展實現(xiàn)公鑰加密的方法

    下面小編就為大家分享一篇PHP 使用openssl 擴展實現(xiàn)公鑰加密的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-03-03
  • 如何使用Zephir輕松構建PHP擴展

    如何使用Zephir輕松構建PHP擴展

    通過PHP擴展,我們可以在php代碼中使用一些特定的方法(大部分的 php擴展都是用C寫的)。本文將介紹如何使用Zephir輕松構建PHP擴展。
    2021-05-05

最新評論