Authcode函数:动态密匙加解密并设置密文有效期(相同的明文会生成不同密文)

更新时间:2020-02-11 20:34:00点击:3687 可视组件

Authcode函数来自Discuz程序,用于加密解密字符串,可以设置钥匙(key)和过期时间, 原版的函数代码可能会生成+、/、&这样的字符,导致通过URL传值取回时被转义,导致无法解密。



 0 验证数据有效性
            // substr($result, 10, 16) == substr(md5(substr($result, 26).$keyb), 0, 16) 验证数据完整性
            // 验证数据有效性,请看未加密明文的格式
            if((substr($result, 0, 10) == 0 || substr($result, 0, 10) - time() > 0) && substr($result, 10, 16) == substr(md5(substr($result, 26).$keyb), 0, 16))
            {
                return substr($result, 26);
            }
            else
            {
                return '';
            }
        }
        else
        {
            // 把动态密匙保存在密文里,这也是为什么同样的明文,生产不同密文后能解密的原因
            // 因为加密后的密文可能是一些特殊字符,复制过程可能会丢失,所以用base64编码
            return $keyc.str_replace('=', '', base64_encode($result));
        }
    }
}



echo String2Array('po,sjsd');


推荐阅读