thinkphp3.2 Des.class.php加密失败,为什么?

JoeBlackzqq 2018-06-28 03:20:42
项目中使用了thinkphp3.2的框架,用到里面的Des加密类,但是调用时竟然出错了!
简单了封装成了全局函数:

/**
* Des加密
* @param $str
* @param $key
* @return string
*/
function des_encrypt($str, $key)
{
$crypt = new \Think\Crypt();
$crypt->init('Des'); // 选择Des加密
$res = $crypt->encrypt($str, $key);

return $res;
}


调用语句为: $promotion = des_encrypt('some data', 'my key');


然后执行时就报错了!

:)
Bit shift by negative number
错误位置

FILE: /xxx/simplewind/Core/Library/Think/Crypt/Driver/Des.class.php  LINE: 195
TRACE

#0 /xxx/simplewind/Core/Library/Think/Crypt/Driver/Des.class.php(75): Think\Crypt\Driver\Des::_createKeys('my key')
#1 /xxx/simplewind/Core/Library/Think/Crypt/Driver/Des.class.php(34): Think\Crypt\Driver\Des::_des('my key', '0000000000some ...', 1)
#2 /xxx/simplewind/Core/Library/Think/Crypt.class.php(37): Think\Crypt\Driver\Des::encrypt('0000000000some ...', 'my key', '0000000000')
#3 /xxx/application/Common/Common/function.php(2438): Think\Crypt::encrypt('some data', 'my key')
#4 /xxx/application/Recharge/Controller/OtherRechargeController.class.php(119): des_encrypt('some data', 'my key')

看这错误描述,似乎是说左移或右移时使用了负数,看了下代码确实是这样的!
Des.class.php中 private static function _createKeys ($key)



但这是tp框架的代码,难道我要改?改了还能正确?
-------------------------------------------------------------------------------------------

于是,我又写了个最基本的测试代码,如下:


果然,错误信息是一样的!

那怎么办,难道thinkphp3.2中的Des加密一直是错误的,感觉不可能呀!
希望有遇到过的朋友来交流下,到底我错在哪了?
...全文
329 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuzuning 2018-07-03
  • 打赏
  • 举报
回复
php7 对于位移负值会报这个错
你要么请求 php 开发组织进行规则调整
要么请求 thinkphp 厂商修改代码
当然你也可以自行修改代码,但显然是没有这个能力
即便找到了一个修改方案,因为是非官方的,也还是存在能信度的问题
JoeBlackzqq 2018-07-03
  • 打赏
  • 举报
回复
引用 2 楼 xuzuning 的回复:
>= php7.0 ?
请向 thinkphp 官网投诉这一 bug


[zcm@servers 12]$php -v
PHP 7.2.4 (cli) (built: Apr 12 2018 02:49:03) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
with Xdebug v2.6.0, Copyright (c) 2002-2018, by Derick Rethans
with Zend OPcache v7.2.4, Copyright (c) 1999-2018, by Zend Technologies

xuzuning 2018-06-28
  • 打赏
  • 举报
回复
>= php7.0 ?
请向 thinkphp 官网投诉这一 bug
智商众筹 2018-06-28
  • 打赏
  • 举报
回复
升级php版本应该可以解决吧

4,251

社区成员

发帖
与我相关
我的任务
社区描述
国内外优秀PHP框架讨论学习
社区管理员
  • Framework
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧