2016-10-04 58 views
0

我知道這可能是有點一個共同的問題,也有跨網有關生成安全的鹽進行口令散列處理這麼多的文章。到目前爲止,我已經拿起mcrypt_create_iv一般用於加密的初始化向量,它可以被用來反對MCRYPT_DEV_RANDOM使用時安全地創建特別是鹽。生成/存儲/讀取安全mcrypt的鹽

出於某種原因,儘管有它成功的人,每當我用:

$Salt = mcrypt_create_iv(22, MCRYPT_DEV_RANDOM); 

它適用於散,然後分別將其輸入到數據庫。當回來和認證並把它們放在一起...它似乎從來沒有正常工作。

是否有由mcrypt_create_iv功能不與隱窩兼容產生一些字符?因爲第二個我使用一個有點明文鹽,無論是否從安全的源生成或沒有..它工作正常。但是我想利用特殊字符mcrypt的用法。

(另外,我現在用的是$ 6 $算法隱窩所以只有16鹽所需的字節)

任何幫助,將不勝感激!

謝謝:)

回答

1

我建議使用password_hash()家庭的功能,因爲這些將完全照顧哈希的爲您服務。他們還提供未來兼容性,並且通常是推薦的用於在PHP中處理密碼的方法。

瞭解更多關於如何在這個答案使用它們: https://stackoverflow.com/a/6337021/5086233

至於你原來的問題:我懷疑一個字符集問題的地方,但沒有看到代碼(表定義)來處理,這是不可能的散列告訴。

+0

乾杯。根據php.net文章,我的服務器使用PHP 5.4,它的版本是5.5以上。無論如何,你的帖子無論如何都是有幫助的。我將數據庫中的排序規則更改爲utf-unicode-ci,就在鹽上,現在它可以工作:) – Hazzard

+1

有一個兼容性層,您可以使用它,並將其鏈接到我發佈的答案中。這與內置功能的功能相同。 ;) – ChristianF

+0

不客氣。請記住點贊和/或接受答案。 :) – ChristianF