질문:
Go 함수를 어떻게 모방하도록 만들 수 있나요? 특정 입력 문자열에 대한 PHP의 crypt() 함수 동작. 여기서 CRYPT_BLOWFISH 평가를 포함하는 PHP의 crypt() 평가 결과는 true입니까?
시도 및 예상 결과:
시도는 이를 달성하기 위해 만들어졌지만 성공하지 못했습니다.
Go crypt() 함수가 "enter-new-password" 및 "$2a$09$f5561d2634fb28a969f2dO8QeQ70f4bjCnF/.GvPpjj 문자열을 올바르게 평가하는 것이 원하는 결과입니다. .8jgmtzZP2"를 true로 설정합니다(예: PHP의 crypt()).
해결책:
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에서는 특정 알고리즘을 처리하기 위해 다양한 모듈이 필요한 경우가 많습니다. 이 경우 PHP 예제에 사용된 복어 유형 해싱은 시도된 Go 모듈에서 기본적으로 지원되지 않습니다. 따라서 대신 bcrypt 모듈이 사용되었습니다.
위 내용은 Go에서 CRYPT_BLOWFISH에 대한 PHP의 crypt() 함수 동등성을 달성하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!