有没有不变的 mycrypt 模式?

Posted

技术标签:

【中文标题】有没有不变的 mycrypt 模式?【英文标题】:Is there an mycrypt mode that doesnt change? 【发布时间】:2017-02-04 10:17:47 【问题描述】:

我正在使用 mcrypt 将信用卡号存储在表中。我也在使用相同的信用卡号来检查用户是否已经应用了优惠券代码。

我面临的问题是,当用户在结帐页面上发布他们的信用卡号时,mcrypt 字符串总是会发生变化。

有没有mcrypt方法每次都不改变字符串?

顺便说一句,我正在使用 codeigniter 的加密类来加密信用卡号

任何帮助都将得到真正的应用

【问题讨论】:

最好不要使用mcrypt,它是废弃软件,多年未更新,不支持标准PKCS#7(née PKCS#5)填充,只有非标准空填充可以'甚至不能与二进制数据一起使用。 mcrypt 有许多出色的 bugs 可以追溯到 2003 年。请考虑使用 defuse 或 RNCryptor,它们提供了完整的解决方案并且正在维护并且是正确的。 不要玩信用卡,使用第三方服务,如 PayPal、Stripe 或 AuthorizeNet。句号。 【参考方案1】:

注意:不建议存储和处理信用卡数据 让您对安全和加密知之甚少

您使用的函数输出不同的字符串,但如果输入相同,您可以检查它们。

对于每次返回“相同字符串”的函数,您可以使用 SHA256 哈希函数:

<?php
   $string = "123";
   $hash = hash( 'sha256', $string );
   $user_input = "123";

   if(hash( 'sha256', $user_input ) == $hash)
        echo "Correct credit card number";
    else 
        echo "Did not find a match";
   
?>

阅读更多关于 hash() 方法here

【讨论】:

首先,我 1000% 同意 OP 不应该处理或存储敏感数据。 使用简单的 SHA256 对 16 字符密码进行暴力破解几乎是微不足道的,而且它获得 16 位数字会容易几个数量级。如果我们要坚持这个可怕的努力,我们至少应该使用一种相当安全的散列方法,比如password_hash()

以上是关于有没有不变的 mycrypt 模式?的主要内容,如果未能解决你的问题,请参考以下文章

了解什么是不变模式

不变模式

应用程序图标保持不变

列中的值一小时不变

红帽打造首个 K8S 原生 IDE;谷歌测试 Chrome “永不变慢”模式

策略模式学习三---总结