当前位置:Gxlcms > PHP教程 > PHP加密解密函数代码实现范例

PHP加密解密函数代码实现范例

时间:2021-07-01 10:21:17 帮助过:10人阅读

本篇文章将带大家一起学习用PHP实现加解密,代码具有一定参考价值,有需要的朋友可以看看。

  1. <?php
  2. //加密函数
  3. function passport_encrypt($txt, $key) {
  4. srand((double)microtime() * 1000000);
  5. $encrypt_key = md5(rand(0, 32000));
  6. $ctr = 0;
  7. $tmp = '';
  8. for($i = 0;$i < strlen($txt); $i++) {
  9. $ctr = $ctr == strlen($encrypt_key) ? 0 : $ctr;
  10. $tmp .= $encrypt_key[$ctr].($txt[$i] ^ $encrypt_key[$ctr++]);
  11. }
  12. return base64_encode(passport_key($tmp, $key));
  13. }
  14. //解密函数
  15. function passport_decrypt($txt, $key) {
  16. $txt = passport_key(base64_decode($txt), $key);
  17. $tmp = '';
  18. for($i = 0;$i < strlen($txt); $i++) {
  19. $md5 = $txt[$i];
  20. $tmp .= $txt[++$i] ^ $md5;
  21. }
  22. return $tmp;
  23. }
  24. //上面两个函数用到的公共函数
  25. function passport_key($txt, $encrypt_key) {
  26. $encrypt_key = md5($encrypt_key);
  27. $ctr = 0;
  28. $tmp = '';
  29. for($i = 0; $i < strlen($txt); $i++) {
  30. $ctr = $ctr == strlen($encrypt_key) ? 0 : $ctr;
  31. $tmp .= $txt[$i] ^ $encrypt_key[$ctr++];
  32. }
  33. return $tmp;
  34. }
  35. //----------------------------------------
  36. //----------------------------------------
  37. //-------------示例-----------------------
  38. //----------------------------------------
  39. //----------------------------------------
  40. //
  41. $str = '你好,我是+-!少林a b张三丰';
  42. echo '<br>------key:aaa----------<br>';
  43. echo $x = passport_encrypt($str,'aaa');
  44. //值会变,其中一个如下
  45. //AOdS7lWlU+IM+1fnALBV5QOOV7dchQfEX+MCwgf2U3BXeQcnVuNavgPAA+hbmlLJAWEHIVRnD7hYvgf/U+lS4gCKUrdVvVO3
  46. echo '<br>-----------------------<br>';
  47. echo passport_decrypt($x,'aaa');
  48. echo '<br><br><br><br><br><br><br><br><br><br><br><br>';
  49. echo '<br>------key:bbb----------<br>';
  50. echo $y = passport_encrypt($str,'bbb');
  51. //值会变,其中一个如下
  52. //Ae0F5gD1C+oB9wC/DOZZ6AeKU7MCjleWUbEAmFGuAi4JLF8gUeFW4lKQUrYBmlrAA2MHIVcxBrMFv1PzXOha5QGABb8A7Qu/
  53. echo '<br>-----------------------<br>';
  54. echo passport_decrypt($y,'bbb');
  55. ?>
  1. <?php
  2. //加解密字符串函数,可以加密中文
  3. /*
  4. //加密
  5. echo $encode = authcode('爱迪生', 'ENCODE', '3'); //DvAHOdGFqa8xK4CDLnbr2mE
  6. //解密
  7. echo $decode = authcode($encode, 'DECODE', '3'); //爱迪生
  8. //密钥
  9. $auth_key = 34577;
  10. 参数:$string字符串,$operation加密还是解密,$key密钥
  11. */
  12. function authcode($string, $operation, $key = '')
  13. {
  14. $key = md5($key ? $key : $GLOBALS['auth_key']);
  15. $key_length = strlen($key);
  16. $string = $operation == 'DECODE' ? base64_decode($string) : substr(md5($string . $key), 0, 8) . $string;
  17. $string_length = strlen($string);
  18. $rndkey = $box = array();
  19. $result = '';
  20. for ($i = 0; $i <= 255; $i++) {
  21. $rndkey[$i] = ord($key[$i % $key_length]);
  22. $box[$i] = $i;
  23. }
  24. for ($j = $i = 0; $i < 256; $i++) {
  25. $j = ($j + $box[$i] + $rndkey[$i]) % 256;
  26. $tmp = $box[$i];
  27. $box[$i] = $box[$j];
  28. $box[$j] = $tmp;
  29. }
  30. for ($a = $j = $i = 0; $i < $string_length; $i++) {
  31. $a = ($a + 1) % 256;
  32. $j = ($j + $box[$a]) % 256;
  33. $tmp = $box[$a];
  34. $box[$a] = $box[$j];
  35. $box[$j] = $tmp;
  36. $result .= chr(ord($string[$i]) ^ $box[($box[$a] + $box[$j]) % 256]);
  37. }
  38. if ($operation == 'DECODE') {
  39. if (substr($result, 0, 8) == substr(md5(substr($result, 8) . $key), 0, 8)) {
  40. return substr($result, 8);
  41. } else {
  42. return '';
  43. }
  44. } else {
  45. return str_replace('=', '', base64_encode($result));
  46. }
  47. }
  48. ?>

相关教程:PHP视频教程

以上就是PHP加密解密函数代码实现范例的详细内容,更多请关注Gxl网其它相关文章!

人气教程排行