精易论坛

标题: 国庆来一发,tea加密解密源码,带过期校验 带配套php [打印本页]

作者: 人气猫    时间: 2017-10-1 11:50
标题: 国庆来一发,tea加密解密源码,带过期校验 带配套php
本帖最后由 人气猫 于 2017-10-1 11:50 编辑

此代码是在 QQ tea的算法基础上修改的,并提供了配套的php代码 可直接用于网络验证,
tea加密解密源码,纯算法,无引用任何模块加密时可以设置过期时间,超过时间,无法解密。。可用于实时操作
加密时自动加入随机字符,每次加密结果都不同。
xxtea_new.e (15.42 KB, 下载次数: 501)


补充内容 (2022-3-25 08:32):
php 源码在2楼

补充内容 (2022-3-25 08:33):
php 源码在2楼
php 源码在2楼

补充内容 (2022-3-25 08:33):
php 源码在2楼
作者: 人气猫    时间: 2017-10-1 11:50
php不是上传,贴这里吧
<?php

//字节集数据通过 file_get_contents("php://input") 获取
//文件编码 gbk

function long2str($v, $w) {
    $len = count($v);
    $n = ($len - 1) << 2;
    if ($w) {
        $m = $v[$len - 1];
        if (($m < $n - 3) || ($m > $n)) return false;
        $n = $m;
    }
    $s = array();
    for ($i = 0; $i < $len; $i++) {
        $s[$i] = pack("V", $v[$i]);
    }
    if ($w) {
        return substr(join('', $s), 0, $n);
    }
    else {
        return join('', $s);
    }
}

function str2long($s, $w) {
    $v = unpack("V*", $s. str_repeat("\0", (4 - strlen($s) % 4) & 3));
    $v = array_values($v);
    if ($w) {
        $v[count($v)] = strlen($s);
    }
    return $v;
}

function int32($n) {
    while ($n >= 2147483648) $n -= 4294967296;
    while ($n <= -2147483649) $n += 4294967296;
    return (int)$n;
}

function xxtea_encrypt($str, $key , $expiry = 0) {
    if ($str == "") {
        return "";
    }
    $ckey_length = 4;

    $str .= random($ckey_length);

    //有效期
    $str = sprintf('%010d', $expiry ? $expiry + time() : 0).$str;

    $v = str2long($str, true);
    $k = str2long($key, false);
    if (count($k) < 4) {
        for ($i = count($k); $i < 4; $i++) {
            $k[$i] = 0;
        }
    }
    $n = count($v) - 1;

    $z = $v[$n];
    $y = $v[0];
    $delta = 0x9E3779B9;
    $q = floor(6 + 52 / ($n + 1));
    $sum = 0;
    while (0 < $q--) {
        $sum = int32($sum + $delta);
        $e = $sum >> 2 & 3;
        for ($p = 0; $p < $n; $p++) {
            $y = $v[$p + 1];
            $mx = int32((($z >> 5 & 0x07ffffff) ^ $y << 2) + (($y >> 3 & 0x1fffffff) ^ $z << 4)) ^ int32(($sum ^ $y) + ($k[$p & 3 ^ $e] ^ $z));

            $z = $v[$p] = int32($v[$p] + $mx);
        }
        $y = $v[0];
        $mx = int32((($z >> 5 & 0x07ffffff) ^ $y << 2) + (($y >> 3 & 0x1fffffff) ^ $z << 4)) ^ int32(($sum ^ $y) + ($k[$p & 3 ^ $e] ^ $z));

        $z = $v[$n] = int32($v[$n] + $mx);
    }
    return long2str($v, false);
}

function xxtea_decrypt($str, $key) {
    if ($str == "") {
        return "";
    }

    $ckey_length = 4;

    $v = str2long($str, false);
    $k = str2long($key, false);
    if (count($k) < 4) {
        for ($i = count($k); $i < 4; $i++) {
            $k[$i] = 0;
        }
    }
    $n = count($v) - 1;
    $y = $v[0];
    $delta = 0x9E3779B9;
    $q = floor(6 + 52 / ($n + 1));
    $sum = int32($q * $delta);
    while ($sum != 0) {
        $e = $sum >> 2 & 3;
        for ($p = $n; $p > 0; $p--) {
            $z = $v[$p - 1];
            $mx = int32((($z >> 5 & 0x07ffffff) ^ $y << 2) + (($y >> 3 & 0x1fffffff) ^ $z << 4)) ^ int32(($sum ^ $y) + ($k[$p & 3 ^ $e] ^ $z));
            $y = $v[$p] = int32($v[$p] - $mx);
        }
        $z = $v[$n];
        $mx = int32((($z >> 5 & 0x07ffffff) ^ $y << 2) + (($y >> 3 & 0x1fffffff) ^ $z << 4)) ^ int32(($sum ^ $y) + ($k[$p & 3 ^ $e] ^ $z));
        $y = $v[0] = int32($v[0] - $mx);
        $sum = int32($sum - $delta);
    }

    $ret = long2str($v, true);

    $date_len = strlen($ret);

    $ret = substr($ret, 0,$date_len-$ckey_length);

    if(substr($ret, 0, 10) == 0 || substr($ret, 0, 10) - time() > 0){
        $ret = substr($ret, 10);
    }else{
        $ret = '';
    }
    return $ret;
}
function random($length, $numeric = 0) {
  PHP_VERSION < '4.2.0' && mt_srand((double)microtime() * 1000000);
  if($numeric) {
    $hash = sprintf('%0'.$length.'d', mt_rand(0, pow(10, $length) - 1));
  } else {
    $hash = '';
    $chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz';
    $max = strlen($chars) - 1;
    for($i = 0; $i < $length; $i++) {
      $hash .= $chars[mt_rand(0, $max)];
    }
  }
  return $hash;
}

//$key = "1234567890abcdef";
//$postr = file_get_contents("php://input");
//echo xxtea_encrypt($postr,$key);
//echo xxtea_decrypt($postr,$key);

?>


作者: sa123123    时间: 2017-10-1 12:12
看看,感谢开源
作者: 反客为主    时间: 2017-10-1 14:53
66666666666666
作者: happyweeks365    时间: 2017-10-1 18:05
人气猫 发表于 2017-10-1 11:50
php不是上传,贴这里吧

楼主 能不能详细的说明下怎么使用 谢了
作者: 人气猫    时间: 2017-10-1 19:21
happyweeks365 发表于 2017-10-1 18:05
楼主 能不能详细的说明下怎么使用 谢了

一共就两个函数,加密,解密,,,还能怎么用嘛。。已经很简单了。测试也有调用方法 。
作者: bin11    时间: 2017-10-1 20:11
。。。。。。。。。。。
作者: cpjhy0535    时间: 2017-10-2 02:34
难道就我自己,加密无结果吗?
作者: happyweeks365    时间: 2017-10-2 07:55
人气猫 发表于 2017-10-1 19:21
一共就两个函数,加密,解密,,,还能怎么用嘛。。已经很简单了。测试也有调用方法 。

OK。。。。。。。。。。。。。。。。。。。。。
作者: 人气猫    时间: 2017-10-2 10:00
cpjhy0535 发表于 2017-10-2 02:34
难道就我自己,加密无结果吗?

密钥长度最少16以上。。加密内容貌似也要16以上我有一个地方填错了。改下即可
作者: cpjhy0535    时间: 2017-10-2 14:32
人气猫 发表于 2017-10-2 10:00
密钥长度最少16以上。。加密内容貌似也要16以上我有一个地方填错了。改下即可

看到了...怪我偷懒,直接上来直接调试了...
作者: vSpear    时间: 2017-10-4 09:53
PHP 咧哥们儿
作者: 人气猫    时间: 2017-10-4 09:57
vSpear 发表于 2017-10-4 09:53
PHP 咧哥们儿

在2楼。。。
作者: vSpear    时间: 2017-10-4 09:57
人气猫 发表于 2017-10-4 09:57
在2楼。。。

找到了 噜啦噜啦
作者: lz123456789    时间: 2017-10-5 22:38
提示: 作者被禁止或删除 内容自动屏蔽
作者: syamd29    时间: 2017-10-6 00:23
#在这中秋快乐 来偷一波模块里快速回复#
作者: 本源    时间: 2017-10-6 03:06
学习看下这个算法如何
作者: 人气猫    时间: 2017-10-8 00:12
lz123456789 发表于 2017-10-5 22:38
这个源码 我好像在哪里看到过

不可能的。。。
作者: 悲鸣草    时间: 2017-10-9 10:08
支持开源~!感谢分享
作者: tianxi    时间: 2017-10-17 11:25
支持开源 厉害
作者: wojinz    时间: 2017-10-21 22:21
很厉害的源码
作者: 爱生活爱晴天    时间: 2017-10-25 23:45

作者: 小曹    时间: 2017-10-26 11:28
哥 PHP源码呢
作者: 人气猫    时间: 2017-10-27 13:47
小曹 发表于 2017-10-26 11:28
哥 PHP源码呢

在2楼。。。。。。。。。。。。。。。。

作者: wangdili1982    时间: 2017-11-14 16:23
提示: 作者被禁止或删除 内容自动屏蔽
作者: 莫泽才    时间: 2017-12-30 22:18
谢谢分享!!!
作者: xiaoxiao2    时间: 2018-10-3 02:11
请问 php代码  呢?
作者: Else    时间: 2018-10-22 14:41

请问 php代码  呢?
作者: wuyouyule    时间: 2019-2-6 00:25
看看,好不好用
作者: 忘记方位    时间: 2020-2-7 05:15
提示: 作者被禁止或删除 内容自动屏蔽
作者: 忘记方位    时间: 2020-2-7 05:18
提示: 作者被禁止或删除 内容自动屏蔽
作者: Gina    时间: 2020-7-28 17:06
正是我需要的,感谢大神
作者: zhifu3158    时间: 2021-2-2 23:48
#在这里快速回复#支持开源~!感谢分享
作者: 高邦    时间: 2021-8-15 23:00
#在这里快速回复#支持开源~!感谢分享
作者: 梦鹅    时间: 2021-12-16 21:03
1111111111111111
作者: yjlxmsfzhm    时间: 2021-12-19 18:25
配套的php代码呢???
作者: 780715740    时间: 2022-3-24 11:11

配套的php代码呢???
作者: 人气猫    时间: 2022-3-25 08:32
780715740 发表于 2022-3-24 11:11
配套的php代码呢???

php 源码 在2楼
作者: spyshadow    时间: 2022-7-14 22:08
感谢楼主分享
作者: 小马识图    时间: 2022-9-4 18:21
666 学习了
作者: kiss0459    时间: 2022-9-6 23:53
加密结果 0字节
作者: qq73s5456    时间: 2022-10-26 16:43
那么, 二楼在哪里?
作者: 15930887162    时间: 2024-9-11 23:43
下载看看。。。。?




欢迎光临 精易论坛 (https://125.confly.eu.org/) Powered by Discuz! X3.4