当前位置:首页 > PHP教程 > php应用 > 列表

PHP中DES加解密的代码示例

发布:smiling 来源: PHP粉丝网  添加日期:2020-02-11 20:14:24 浏览: 评论:0 

本篇文章给大家带来的内容是关于PHP中DES加解密的代码示例,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

test.php测试文件

  1. <?php 
  2.  
  3. require_once('Des.php'); 
  4.  
  5. $des = new Des(); 
  6.  
  7. $data['a'] = 'a'
  8.  
  9. $data['b'] = 'b'
  10.  
  11. $conf = ['appkey'=>'AbcdefghijklmnopqrstuvwX','secretcode'=>'Abcdefgh']; 
  12.  
  13. $encode = $des->encode($data$conf); 
  14.  
  15. print_r($encode); 
  16.  
  17. echo "<br>"
  18. //phpfensi.com 
  19. $decode = $des->decode($encode,$conf); 
  20.  
  21. print_r($decode); 
  22.  
  23. ?> 

Des.php

  1. <?php 
  2.  
  3.  
  4.  
  5. require_once('TripleDES.php'); 
  6.  
  7.  
  8.  
  9. class Des { 
  10.  
  11.  
  12.  
  13.     public static function encode($data$configKey) { 
  14.  
  15.         $tripleDes = new TripleDES(); 
  16.  
  17.         if (is_array($data)) { 
  18.  
  19.             $data = json_encode($data); 
  20.  
  21.         } 
  22.  
  23.         return $tripleDes->encode($data$configKey["appkey"], $configKey["secretcode"]); 
  24.  
  25.     } 
  26.  
  27.  
  28.  
  29.     public static function decode($data$configKey) { 
  30.  
  31.         $tripleDes = new TripleDES(); 
  32.  
  33.         return $tripleDes->decode($data$configKey["appkey"], $configKey["secretcode"]); 
  34.  
  35.     } 
  36.  
  37.  
  38.  
  39.     public static function encodeArr($data$configKey) { 
  40.  
  41.         $data = json_encode($data); 
  42.  
  43.         return self::encode($data$configKey); 
  44.  
  45.     } 
  46.  
  47.  
  48.  
  49.     public static function decodeArr($data$configKey) { 
  50.  
  51.         $res = self::decode($data$configKey); 
  52.  
  53.         return json_decode($res,true); 
  54.  
  55.     } 
  56.  
  57.  
  58.  

TripleDES.php

  1. <?php 
  2.  
  3.  
  4.  
  5. class TripleDES { 
  6.  
  7.  
  8.  
  9.     public static function genIvParameter() { 
  10.  
  11.         return mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_TRIPLEDES, MCRYPT_MODE_CBC), MCRYPT_RAND); 
  12.  
  13.     } 
  14.  
  15.  
  16.  
  17.     private static function pkcs5Pad($text$blocksize) { 
  18.  
  19.         $pad = $blocksize - (strlen($text) % $blocksize); // in php, strlen returns the bytes of $text 
  20.  
  21.         return $text . str_repeat(chr($pad), $pad); 
  22.  
  23.     } 
  24.  
  25.  
  26.  
  27.     private static function pkcs5Unpad($text) { 
  28.  
  29.         $pad = ord($text{strlen($text) - 1}); 
  30.  
  31.         if ($pad > strlen($text)) 
  32.  
  33.             return false; 
  34.  
  35.         if (strspn($textchr($pad), strlen($text) - $pad) != $pad
  36.  
  37.             return false; 
  38.  
  39.         return substr($text, 0, -1 * $pad); 
  40.  
  41.     } 
  42.  
  43.  
  44.  
  45.     public static function encryptText($plain_text$key$iv) { 
  46.  
  47.         $padded = TripleDES::pkcs5Pad($plain_text, mcrypt_get_block_size(MCRYPT_TRIPLEDES, MCRYPT_MODE_CBC)); 
  48.  
  49.         return mcrypt_encrypt(MCRYPT_TRIPLEDES, $key$padded, MCRYPT_MODE_CBC, $iv); 
  50.  
  51.     } 
  52.  
  53.  
  54.  
  55.     public static function decryptText($cipher_text$key$iv) { 
  56.  
  57.         if(function_exists('mcrypt_decrypt')){ 
  58.  
  59.             $plain_text = mcrypt_decrypt(MCRYPT_TRIPLEDES, $key$cipher_text, MCRYPT_MODE_CBC, $iv); 
  60.  
  61.         }else
  62.  
  63.             $plain_text = openssl_decrypt($cipher_text'DES-EDE3-CBC',$key, OPENSSL_NO_PADDING,$iv); 
  64.  
  65.         } 
  66.  
  67.         return TripleDES::pkcs5Unpad($plain_text); 
  68.  
  69.     } 
  70.  
  71.  
  72.  
  73.     public static function decode($cipher_text$key$iv) { 
  74.  
  75.         $cipher_text = base64_decode($cipher_text); 
  76.  
  77.         $cipher_text = TripleDES::decryptText($cipher_text$key$iv); 
  78.  
  79.         return $cipher_text
  80.  
  81.     } 
  82.  
  83.  
  84. //phpfensi.com 
  85.     public static function encode($cipher_text$key$iv) { 
  86.  
  87.         $cipher_text = TripleDES::encryptText($cipher_text$key$iv); 
  88.  
  89.         return base64_encode($cipher_text); 
  90.  
  91.     } 
  92.  
  93.  
  94.  

Tags: DES加解密

分享到:

相关文章