开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 9754|回复: 43
收起左侧

[易语言纯源码] 国庆来一发,tea加密解密源码,带过期校验 带配套php

[复制链接]
发表于 2017-10-1 11:50:18 | 显示全部楼层 |阅读模式   河南省驻马店市
分享源码
界面截图: -
是否带模块: 纯源码
备注说明: -
本帖最后由 人气猫 于 2017-10-1 11:50 编辑

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

点评

php 源码在2楼 php 源码在2楼   江苏省苏州市  发表于 2022-3-25 08:33

评分

参与人数 4好评 +2 精币 +6 收起 理由
bianyuan456 + 2 支持开源~!感谢分享
zhifu3158 + 1 + 1 支持开源~!感谢分享
爱生活爱晴天 + 1 很赞同,谢谢!
七月和五月 + 1 + 2 支持开源~!感谢分享

查看全部评分


本帖被以下淘专辑推荐:

  • · 收集|主题: 45, 订阅: 3

签到天数: 20 天

 楼主| 发表于 2017-10-1 11:50:19 | 显示全部楼层   河南省驻马店市
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);

?>

回复 支持 反对

使用道具 举报

签到天数: 1 天

发表于 2024-9-11 23:43:46 高大上手机用户 | 显示全部楼层   河北省石家庄市
下载看看。。。。?
回复 支持 反对

使用道具 举报

结帖率:100% (1/1)

签到天数: 20 天

发表于 2022-10-26 16:43:10 | 显示全部楼层   广东省深圳市
那么, 二楼在哪里?
回复 支持 反对

使用道具 举报

结帖率:25% (6/24)

签到天数: 4 天

发表于 2022-9-6 23:53:03 | 显示全部楼层   黑龙江省哈尔滨市
加密结果 0字节
回复 支持 反对

使用道具 举报

签到天数: 1 天

发表于 2022-9-4 18:21:09 | 显示全部楼层   新疆维吾尔自治区乌鲁木齐市
666 学习了
回复 支持 反对

使用道具 举报

发表于 2022-7-14 22:08:47 | 显示全部楼层   广东省东莞市
感谢楼主分享
回复 支持 反对

使用道具 举报

签到天数: 20 天

 楼主| 发表于 2022-3-25 08:32:48 | 显示全部楼层   江苏省苏州市
780715740 发表于 2022-3-24 11:11
配套的php代码呢???

php 源码 在2楼
回复 支持 反对

使用道具 举报

发表于 2022-3-24 11:11:56 | 显示全部楼层   浙江省温州市

配套的php代码呢???
回复 支持 反对

使用道具 举报

发表于 2021-12-19 18:25:42 | 显示全部楼层   浙江省衢州市
配套的php代码呢???
回复 支持 反对

使用道具 举报

发表于 2021-12-16 21:03:49 | 显示全部楼层   广东省深圳市
1111111111111111
回复 支持 反对

使用道具 举报

结帖率:100% (1/1)
发表于 2021-8-15 23:00:04 | 显示全部楼层   四川省成都市
#在这里快速回复#支持开源~!感谢分享
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表