2016-09-26 49 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