PHP의 crypt() 함수는 복어를 포함한 다양한 해싱 방법을 제공합니다. Golang에서 해당 동작을 복제하려는 시도는 직접적인 대응이 없기 때문에 어려운 것으로 입증되었습니다.
대체 솔루션
정확한 Golang crypt() 대응이 부족함에도 불구하고 , golang.org/x/crypto/bcrypt 패키지를 사용하면 효과적인 대안을 사용할 수 있습니다. 다음 코드 조각은 예를 제공합니다.
<code class="go">import "golang.org/x/crypto/bcrypt" // Check whether the bcrypt version of "enter-new-password" matches "a$f5561d2634fb28a969f2dO8QeQ70f4bjCnF/.GvPpjj.8jgmtzZP2". check := bcrypt.CompareHashAndPassword([]byte("a$f5561d2634fb28a969f2dO8QeQ70f4bjCnF/.GvPpjj.8jgmtzZP2"), []byte("enter-new-password")) log.Println(check)</code>
"enter-new-password"의 bcrypt 해시가 제공된 해시와 일치하는 경우 검사는 nil이 됩니다. 그렇지 않으면 검사가 오류 개체로 설정됩니다.
고려사항
PHP의 crypt() 함수는 sha256, sha512, 복어 등 다양한 해싱 알고리즘을 지원합니다. Golang에서는 해시 유형, 비용 및 기타 매개변수를 명시적으로 지정해야 합니다.
제공된 해시의 $2a$ 접두사는 복어 기반 알고리즘의 사용을 나타냅니다. 일부 초기 솔루션 시도에서는 이를 고려하지 않아 잘못된 결과가 나왔습니다.
golang.org/x/crypto/bcrypt/bcrypt_test.go 파일은 이 패키지를 효과적으로 활용하는 방법에 대한 추가 예를 제공합니다.
위 내용은 Golang에서 Blowfish를 사용하여 PHP의 crypt() 기능을 구현하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!