問題:
如何讓Go 函數模仿PHP 的函數模仿PHP 的ptPHP( ) 函數對於特定輸入字串的行為,其中PHP 的crypt() 與CRYPT_BLOWFISH 評估結果為true?
嘗試與預期結果:
嘗試嘗試實現此目的,但沒有成功:
期望的結果是Go crypt() 函數正確評估字串「enter-new-password」和「$2a$09$f5561d2634fb28a969f2dO8QeQ70f4bjCnnF/.GvPpulwemip. ()。
解決方案:
雖然在Go 中找不到確切的PHP crypt() 等效項,但可以找到替代方案解決方案已實施:
<code class="go">import "golang.org/x/crypto/bcrypt" check := bcrypt.CompareHashAndPassword([]byte("a$f5561d2634fb28a969f2dO8QeQ70f4bjCnF/.GvPpjj.8jgmtzZP2"), []byte("enter-new-password")) if check == nil { fmt.Println("Passwords match") } else { fmt.Println("Passwords don't match") }</code>
此方法利用golang.org/x/crypto/bcrypt 模組將提供的密碼與儲存的雜湊值進行比較。如果密碼匹配,CompareHashAndPassword() 函數將傳回 nil,否則傳回錯誤。
附加說明:
需要注意的是,PHP 的 crypt 函數提供了多種雜湊演算法,包括 sha256、sha512 和河豚。在 Go 中,通常需要不同的模組來處理特定的演算法。在這種情況下,任何嘗試的 Go 模組本身都不支援 PHP 範例中使用的河豚類型雜湊。因此,改用了 bcrypt 模組。
以上是如何在 Go 中實作與 CRYPT_BLOWFISH 等價的 PHP crypt() 函數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!