如何解决ecshop虚拟卡出现星号问题

 我来答
瑛夫科技
2016-10-26 · TA获得超过8331个赞
知道大有可为答主
回答量:3426
采纳率:89%
帮助的人:654万
展开全部
在所有的ecshop的版本当中,网站搬家或者使用LINUX主机,虚拟物品卡号密码全部变成***很突然。没有进行任何后台改动。添加新产品的卡密也是如此

分析ecshop,我们发现
发现是/admin/virtual_card.php里 有关于星号 看程序后 发现是由include/lib_code.php关于加密解密函数控制的。
virtual_card.php 控制的代码如下
foreach ($all AS $key => $row)
{
if ($row['crc32'] == 0 || $row['crc32'] == crc32(AUTH_KEY))
{
$row['card_sn'] = decrypt($row['card_sn']);
$row['card_password'] = decrypt($row['card_password']);
}
elseif ($row['crc32'] == crc32(OLD_AUTH_KEY))
{
$row['card_sn'] = decrypt($row['card_sn'], OLD_AUTH_KEY);
$row['card_password'] = decrypt($row['card_password'], OLD_AUTH_KEY);
}
else
{
$row['card_sn'] = '***';
$row['card_password'] = '***';
}
复制代码
深入分析后发现
$row['crc32'] == 0 || $row['crc32'] == crc32(AUTH_KEY))
复制代码
以及
($row['crc32'] == crc32(OLD_AUTH_KEY))
复制代码
主要是判断数据库中得crc32字段和经过crc32加密的字符串是否一致
但是发现
数据库中的crc32字符串和crc32加密的字符串 完全不一样所以导致了 出现卡号和卡密为星号的问题
比如我们加密字符串设置的是456 数据库中的crc32 显示为 2147483647 而我们直接代码crc32出来的值为 2980627313 所以导致了 卡号显示为三个***

其实该问题以linux 时间戳问题引起,解决办法很简单
UPDATE virtual_card SET crc32 = ‘0’
ecshop开发中心
2016-10-27 · TA获得超过577个赞
知道大有可为答主
回答量:2299
采纳率:0%
帮助的人:581万
展开全部
在所有的ecshop的版本当中,网站搬家或者使用LINUX主机,虚拟物品卡号密码全部变成***很突然。没有进行任何后台改动。添加新产品的卡密也是如此 分析ecshop,我们发现 发现是/admin/virt 在所有的ecshop的版本当中,网站搬家或者使用LINUX主机,虚拟物品卡号密码全部变成***很突然。没有进行任何后台改动。添加新产品的卡密也是如此 分析ecshop,我们发现是/admin/virtual_card.php里 有关于星号 看程序后 发现是由include/lib_code.php关于加密解密函数控制的。

virtual_card.php 控制的代码如下 foreach ($all AS $key => $row) { if ($row['crc32'] == 0 || $row['crc32'] == crc32(AUTH_KEY)) { $row['card_sn'] = decrypt($row['card_sn']); $row['card_password'] = decrypt($row['card_password']); } elseif ($row['crc32'] == crc32(OLD_AUTH_KEY)) { $row['card_sn'] = decrypt($row['card_sn'], OLD_AUTH_KEY); $row['card_password'] = decrypt($row['card_password'], OLD_AUTH_KEY); } else { $row['card_sn'] = '***'; $row['card_password'] = '***'; }

复制代码 深入分析后发现 $row['crc32'] == 0 || $row['crc32'] == crc32(AUTH_KEY))

复制代码 以及 ($row['crc32'] == crc32(OLD_AUTH_KEY))

复制代码 主要是判断数据库中得crc32字段和经过crc32加密的字符串是否一致 但是发现 数据库中的crc32字符串和crc32加密的字符串 完全不一样所以导致了 出现卡号和卡密为星号的问题 比如我们加密字符串设置的是456 数据库中的crc32 显示为 2147483647 而我们直接代码crc32出来的值为 2980627313 所以导致了 卡号显示为三个*** 其实该问题以linux 时间戳问题引起,解决办法很简单 UPDATE virtual_card SET crc32 = ‘0’
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式