2016-09-26 43 views
0

我正在使用mcrypt将信用卡号码存储在表中。我也使用相同的信用卡号码来检查用户是否已经应用了优惠券代码。是否有不加改变的mycrypt模式?

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

是否有一个mcrypt方法不会每次都更改字符串?

顺便说一句,我使用CodeIgniter的加密类到加密的信用卡号码

任何帮助将是非常appricated

+0

最好不要使用mcrypt的,这是放弃的,并没有被更新,并且不支持标准的PKCS#7(néePKCS#5)填充,只有非标准的null填充甚至不能用于二进制数据。 mcrypt有很多优秀的[bug](https://sourceforge.net/p/mcrypt/bugs/)可以追溯到2003年。相反,考虑使用[defuse](https://github.com/defuse/php-encryption)或者[RNCryptor](https://github.com/RNCryptor),他们提供了一个完整的解决方案,并且正在维护和正确。 – zaph

+0

请勿使用信用卡,使用PayPal,Stripe或AuthorizeNet等第三方服务。句号。 – Tpojka

回答

3

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

你正在使用的函数输出不同的字符串,但你可以如果输入是固定的,请检查它们。

当谈到返回功能“相同的字符串”每次,你可以使用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"; 
    } 
?> 

了解更多关于散列()方法here

+1

**首先,我1000%同意OP不应该处理或存储敏感数据。**使用简单的SHA256对强制性16位字符密码进行散列几乎是微不足道的,而且它将轻松实现16位密码,数字号码。如果我们要坚持这种可怕的努力,我们至少应该使用['password_hash()'](http://php.net/manual/en/function.password-hash.php)等合理安全的哈希方法。 。 – Sammitch