欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

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

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,請(qǐng)更換成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);//如需轉(zhuǎn)換二進(jìn)制可改成 bin2hex 轉(zhuǎn)換
  return $data;
 }
 /*
  * 解密
  */
 function decrypt($encrypted){
  $encrypted = base64_decode($encrypted); //如需轉(zhuǎn)換二進(jìn)制可改成 bin2hex 轉(zhuǎn)換
  $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 = 'www.dbjr.com.cn';
$des = new CryptDes();
$mres = $des->encrypt($str); //加密
echo $mres."<br/>";
$jres = $des->decrypt($mres); //解密
echo $jres."<br/>";

運(yùn)行結(jié)果:

TxqbmhK86YWdTtTAQoDOqA==
www.dbjr.com.cn

附錄:php7 des加密解密

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

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

  可以使用openssl加密擴(kuò)展

下面是封裝的加密和解密的方法可直接調(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);
}

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

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é)運(yùn)算技巧總結(jié)》、《PHP數(shù)組(Array)操作技巧大全》、《php字符串(string)用法總結(jié)》、《PHP數(shù)據(jù)結(jié)構(gòu)與算法教程》、《php程序設(shè)計(jì)算法總結(jié)》及《php正則表達(dá)式用法總結(jié)

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

相關(guān)文章

  • PHP進(jìn)階學(xué)習(xí)之Geo的地圖定位算法詳解

    PHP進(jìn)階學(xué)習(xí)之Geo的地圖定位算法詳解

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

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

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

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

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

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

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

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

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

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

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

    php下使用strpos需要注意 === 運(yùn)算符

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

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

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

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

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

    如何使用Zephir輕松構(gòu)建PHP擴(kuò)展

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

最新評(píng)論