最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

PHP實現(xiàn)的DES加密解密封裝類完整實例

 更新時間:2017年04月29日 10:48:31   作者:PHP二次開發(fā)  
這篇文章主要介紹了PHP實現(xiàn)的DES加密解密封裝類,結(jié)合完整實例形式分析了php DES加密解密封裝類的定義與使用技巧,需要的朋友可以參考下

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

<?php
/**
* PHP版DES加解密類
* 可與java的DES(DESede/CBC/PKCS5Padding)加密方式兼容
*
*/
class CryptDes {
   var $key;
   var $iv;
   function CryptDes($key, $iv){
    $this->key = $key;
    $this->iv = $iv;
   }
   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);//如需轉(zhuǎn)換二進制可改成 bin2hex 轉(zhuǎn)換
     return $data;
   }
   function decrypt($encrypted){
     $encrypted = base64_decode($encrypted); //如需轉(zhuǎ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;
   }
}
$des = new CryptDes("12345678","12345678");//(秘鑰向量,混淆向量)
echo $ret = $des->encrypt("1111");//加密字符串
?>

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

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

迅雷、快車、旋風URL加密/解密工具:
http://tools.jb51.net/password/urlrethunder

在線散列/哈希算法加密工具:
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加密方法總結(jié)》、《PHP編碼與轉(zhuǎn)碼操作技巧匯總》、《PHP數(shù)學運算技巧總結(jié)》、《PHP數(shù)組(Array)操作技巧大全》、《php字符串(string)用法總結(jié)》、《PHP數(shù)據(jù)結(jié)構(gòu)與算法教程》、《php程序設計算法總結(jié)》及《php正則表達式用法總結(jié)

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

相關文章

最新評論

抚松县| 连州市| 上蔡县| 房产| 富民县| 淮阳县| 嘉禾县| 两当县| 门头沟区| 涟源市| 区。| 大名县| 山东| 凤阳县| 永嘉县| 邻水| 达孜县| 白水县| 五峰| 屏边| 崇左市| 灵丘县| 乐山市| 濉溪县| 伊通| 泾川县| 吉林市| 盐源县| 迁西县| 汝南县| 慈溪市| 深圳市| 南丰县| 聂荣县| 稻城县| 宣威市| 青岛市| 湘乡市| 蒲江县| 前郭尔| 内乡县|