微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

discuz 经典php加密解密函数 authcode 解析

康盛的 authcode 函数可以说对中国的PHP界作出了重大贡献。包括康盛自己的产品,以及大部分中国使用PHP的公司都用这个函数进行加密,authcode 是使用异或运算进行加密和解密。 原理如下,假如: 加密 明文:1010 1001 密匙:1110 0011 密文:0100 1010 得出密文0100 1010,解密之需和密匙异或下就可以了 解密 密文:0100 1010 密匙:1110 0011 明文:1010 1001 并没有什么高深的算法,密匙重要性很高,所以,关键在于怎么生成密匙。 那我们一起看下康盛的authcode怎么做的吧 <div class="dp-Highlighter">
<div class="bar">
<div class="tools">PHP代码 <a title="复制代码" href="http://willko.javaeye.com/blog/325137#" target="_blank">

      
  1.   
  2.   
  3.   
  4.   
  5. authcode(, = , = , = 0) {   
  6.     生成不同密文就是依靠动态密匙   
  7.      = 4;   
  8.        
  9.       
  10.      = md5( ? : [discuz_auth_key']);   
  11.        
  12.       
  13.      = md5((,16));   
  14.       
  15.      = md5((,16,16));   
  16.     生成的密文   
  17.      = ? ( == ? (,): (md5(microtime()),-)) : ;   
  18.       
  19.      = .md5(.);   
  20.      = ();   
  21.       
  22.       
  23.      = == ? ((,)) : sprintf(, ? + time() : 0).(md5(.),16).;   
  24.      = ();   
  25.      = ;   
  26.     Box = range(0,255);   
  27.      = ();   
  28.       
  29.     ( = 0; <= 255; ++) {   
  30.         [] = ord([ % ]);   
  31.      }   
  32.     增加随机性,好像很复杂,实际上对并不会增加密文的强度   
  33.     ( = = 0; < 256; ++) {   
  34.          = ( + Box[] + []) % 256;   
  35.          = Box[];   
  36.         Box[] = Box[];   
  37.         Box[] = ;   
  38.      }   
  39.       
  40.     ( = = = 0; < ; ++) {   
  41.          = ( + 1) % 256;   
  42.          = ( + Box[]) % 256;   
  43.          = Box[];   
  44.         Box[] = Box[];   
  45.         Box[] = ;   
  46.           
  47.          .= (ord([]) ^ (Box[(Box[] + Box[]) % 256]));   
  48.      }   
  49.     ( == ) {   
  50.           
  51.          0 验证数据有效性   
  52.           
  53.           
  54.         (((,10) == 0 || (,10) - time() > 0) && (,16) == (md5((,26).),16)) {   
  55.              (,26);   
  56.          } {   
  57.              ;   
  58.          }   
  59.      } {   
  60.           
  61.           
  62.          .(,());   
  63.      }   
  64. }  

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐