2012-04-13 29 views
1

我正在構建我的開發類,並且正在開發一個加密類。我一直在閱讀php的crypt函數和不同的加密類型,但幾個地方已經模糊地解釋。與crypt的不同加密。鹽應該是什麼格式等

我的理解是,有這些加密選項CRYPT_STD_DESCRYPT_EXT_DESCRYPT_MD5CRYPT_BLOWFISHCRYPT_SHA256CRYPT_SHA512。看他們是否被啓用,你只需要檢查

if(CRYPT_FOO==1) 
{ 
    //is enabled 
} 

問題

什麼是比其他的不同的加密鹽的要求/格式。 blowfish對SO的要求。

只是爲了澄清,我假設如果你使用與crypt()河豚鹽它會自動做河豚加密?

+0

可能重複的[PHP crypt和鹽 - 更多的澄清請](http://stackoverflow.com/questions/2192354/php-crypt-and-salt-more-clarification-please) – 2012-04-13 22:34:33

+0

如果你試圖加密密碼,只需使用bcrypt,這是最安全的,你可以擁有。 HTTP://計算器。com/questions/4795385/how-do-you-use-bcrypt-for-hashing-passwords-in-php – aledalgrande 2012-04-13 22:42:46

+0

@KenWhite這些問題解釋了我所問的一些問題。他們正在使用16位加密的河豚。我不確定對諸如'sha256'等各種加密類型的鹽的要求是什麼。 – Yamiko 2012-04-14 00:46:42

回答

3

official documentation of the crypt function介紹了各種模式的相當長的一段信息,以及什麼應該作爲他們salt參數傳遞:

  • CRYPT_STD_DES:從字母./0-9A-Za-z,即一個12位鹽二字符鹽。
  • CRYPT_EXT_DES:a _字符,然後是4個字符的迭代計數,然後是4個字符的鹽(每個使用相同的字母表)。
  • CRYPT_MD5:標記$1$,然後9個鹽字符(使用與上面相同的字母,我想)。
  • CRYPT_BLOWFISH:一個標記$2a$,然後一個兩位數成本參數範圍爲04〜31(這意味着2 至2 31次迭代),然後$和一個22位數字的鹽(再次,使用與上面相同的字母)。
  • CRYPT_SHA256:一個標記$5$,的rounds=$(1000和999999999之間的十進制數)任選的圓形參數指示,以及一個16個字符的鹽(使用相同的字母如上)。
  • CRYPT_SHA512:一個標記$6$,的rounds=$(1000和999999999之間的十進制數)任選的圓形參數指示,以及一個16個字符的鹽(使用相同的字母如上)。

salt參數的開頭唯一標識了哪種密碼哈希算法在這裏使用 - 所以是的,如果您使用bcrypt格式的鹽(以$ 2a $開頭),它將自動使用bcrypt。

相關問題