加入收藏 | 设为首页 | 会员中心 | 我要投稿 汽车网 (https://www.0577qiche.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

WebQQ网页hash加密计算法PHP版

发布时间:2023-06-14 13:54:12 所属栏目:PHP教程 来源:
导读:由于最近QQ垃圾信息群发严重,官方选择将WebQQ部分功能实现细节方面做了点手脚,其中获取好友的POST值多了一个hash参数,这个hash是在js里加密完成的,以下是js源码:

<script type="text/javascript">
function get
由于最近QQ垃圾信息群发严重,官方选择将WebQQ部分功能实现细节方面做了点手脚,其中获取好友的POST值多了一个hash参数,这个hash是在js里加密完成的,以下是js源码:

<script type="text/javascript"> 
function getHash(b, i) { 
    for (var a = i + "password error", 
    s = "",  
    j = [];;) if (s.length <= a.length) {                                                                                                        
        if (s += b, s.length == a.length) break 
    } else { 
        s = s.slice(0, a.length); 
        break 
    }    
    for (var d = 0; d < s.length; d++) j[d] = s.charCodeAt(d) ^ a.charCodeAt(d); 
    a = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F"]; 
    s = "";  
    for (d = 0; d < j.length; d++) s += a[j[d] >> 4 & 15], 
    s += a[j[d] & 15]; 
    return s; 

</script> 
转成PHP版本处理,源码如下:

<?php 
/** 
 * 获取好友时的POST参数Hash算法 
 *  
 * public  
 * @param string $qq qq号 
 * @param string $ptwebqq cookies中的ptwebqq 
 * @return string 
 */ 
function get_hash($qq, $ptwebqq) 

 for ($a = $ptwebqq . "password error", $s = "", $j = array();;) 
 { 
  if (strlen($s) <= strlen($a)) 
  { 
   $s .= $qq; 
   if ($s == strlen($a)) break; 
  } 
  else 
  { 
   $s = substr($s, 0, strlen($a)); 
   break; 
  } 
 } 
 
 for ($d = 0; $d < strlen($s); $d++) 
 { 
  $j[$d] = uniord(substr($s,$d)) ^ uniord(substr($a,$d)); 
 } 
 
 $a = array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F"); 
 $s = ""; 
 for ($d = 0; $d < count($j); $d++) 
 { 
  $s .= $a[$j[$d] >> 4 & 15]; 
  $s .= $a[$j[$d] & 15]; 
 } 
 
 return $s; 

 
/** 
 * 模拟 JavaScript charCodeAt函数  
 *  
 * protected 
 * @param string $str 
 * @return int 
 */ 
function uniord($str) 

 list(, $ord) = unpack('N', mb_convert_encoding($str, 'UCS-4BE', 'UTF-8')); 
 
 return   
 
$ord; 

/* End of file commons.php */ 
 

(编辑:汽车网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章