php 验证qq密码错误,PHP版本QQ密码及g_tk算法

function hexchar2bin($str)

{

$arr = '';

$temp = null;

for ($i = 0; $i < strlen($str); $i = $i + 2) {

$arr .= "\\x" . substr($str, $i, 2);

}

eval('$temp="' . $arr . '";');

return $temp;

}

function getUid($uid)

{

$temp = null;

eval('$temp="' . $uid . '";');

return $temp;

}

function getEncryption($password, $uin, $vcode)

{

$uin = getUid($uin);

$str1 = hexchar2bin(strtoupper(md5($password)));

$str2 = strtoupper(md5($str1 . $uin));

return strtoupper(md5($str2 . strtoupper($vcode)));

}

//print_r(getEncryption('chen123','\x00\x00\x00\x00\xba\xaf\x34\x87','!GMO'));

function utf8_unicode($c)

{

switch (strlen($c)) {

case 1:

return ord($c);

case 2:

$n = (ord($c[0]) & 0x3f) << 6;

$n += ord($c[1]) & 0x3f;

return $n;

case 3:

$n = (ord($c[0]) & 0x1f) << 12;

$n += (ord($c[1]) & 0x3f) << 6;

$n += ord($c[2]) & 0x3f;

return $n;

case 4:

$n = (ord($c[0]) & 0x0f) << 18;

$n += (ord($c[1]) & 0x3f) << 12;

$n += (ord($c[2]) & 0x3f) << 6;

$n += ord($c[3]) & 0x3f;

return $n;

}

}

function getGTK($str)

{

$hash = 5381;

for ($i = 0, $len = strlen($str); $i < $len; ++$i) {

$hash += ($hash << 5) + utf8_unicode($str[$i]);

}

return $hash & 2147483647;

}

print_r(getGTK('@LNKTSNI0F'));

另一种g_tk的算法:<?php

function charCodeAt($str, $index)

{

$char = mb_substr($str, $index, 1, 'UTF-8');

if (mb_check_encoding($char, 'UTF-8'))

{

$ret = mb_convert_encoding($char, 'UTF-32BE', 'UTF-8');

return hexdec(bin2hex($ret));

}

else

{

return null;

}

}

function getGTK($str)

{

$md5key = 'tencentQQVIP123443safde&!%^%1282';

$salt = 5381;

$hash = $salt << 5;

for ($i = 0, $len = strlen($str); $i < $len; ++$i)

{

$asciicode = charCodeAt($str[$i], 0);

$hash = $hash . (($salt << 5) + $asciicode);

$salt = $asciicode;

}

return md5($hash . $md5key);

}

echo getGTK('AYg8iSVJL58F4X2EHBbIT5BS');

标签:none

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值