[php] WordPress에서는 어떤 유형의 해시를 사용합니까?

WordPress에서는 어떤 유형의 해시를 사용합니까?
다음은 WordPress 해시의 예입니다.

$ P $ Bp.ZDNMM98mGNxCtHSkc1DqdRPXeoR.



답변

WordPress 암호 는 WordPress 및 Drupal과 같은 컨텐츠 관리 시스템에서 사용되는 Portable PHP 암호 해싱 프레임 워크를 구현합니다 .

그들은 이전 버전에서 MD5를 사용했지만 슬프게도 더 이상은 아닙니다. http://scriptserver.mainframe8.com/wordpress_password_hasher.php 에서이 암호화 체계를 사용하여 해시를 생성 할 수 있습니다 .


답변

$hash_type$salt$password

해시가 소금을 사용하지 않으면 그것에 대한 $징조 가 없습니다 . 귀하의 경우 실제 해시는 2 일 이후입니다.$

그 이유는 다른 소금을 가진 많은 유형의 해시를 가질 수 있으며 다른 문자열과 일치하는 방법을 알고있는 함수에 해당 문자열을 공급합니다.


답변

MD5는 데이터베이스를 수동으로 변경하는 데 도움이되었습니다. 참조 : 비밀번호 재설정


답변

WordPress DB에서 암호를 수동으로 재설정하려면 간단한 MD5 해시이면 충분합니다. (아래 이유 참조)

이전 버전과의 호환성을 유지하기 위해 데이터베이스에 저장된 MD5 해시 암호는 여전히 유효합니다. 사용자가 이러한 암호로 로그인하면 WordPress는 MD5가 사용 된 것을 감지하고보다 안전한 방법을 사용하여 암호를 다시 해시하고 새 해시를 데이터베이스에 저장합니다.

출처 : http://eamann.com/tech/wordpress-password-hashing/

업데이트 : 이것은 2014 년에 게시 된 답변입니다. 더 이상 WP와 함께 작동하지 않으므로 최신 버전의 WP에서 계속 작동하는지 모르겠습니다.


답변

WordPress에서 사용하는 해시의 종류를 찾는데도 같은 문제가있었습니다.

그것은이다 해시 암호 WP .

이미 해시 된 비밀번호를 일반 텍스트 문자열과 비교하십시오.

<?php
$wp_hasher = new PasswordHash(8, TRUE);

$password_hashed = '$P$B55D6LjfHDkINU5wF.v2BuuzO0/XPk/';
$plain_password = 'test';

if($wp_hasher->CheckPassword($plain_password, $password_hashed)) {
    echo "YES, Matched";
} else {
    echo "No, Wrong Password";
}
?>

다음 링크를 참조하십시오 :
https://codex.wordpress.org/Function_Reference/wp_hash_password

https://developer.wordpress.org/reference/functions/wp_hash_password

PasswordHash를 사용하여 암호에 솔트를 추가하고 8 패스의 MD5로 해시합니다.


답변

사용되는 PHP 버전에 따라 다릅니다. wp-includes/class-phpass.php모든 답변을 포함합니다.


답변

이를 수행하는 가장 좋은 방법은 WordPress 클래스를 사용하여 사용자를 인증하는 것입니다. 내 해결책은 다음과 같습니다.

1. 다음 WordPress PHP 파일을 포함 시키십시오 :

include_once(dirname(dirname(dirname(__FILE__))) . DIRECTORY_SEPARATOR . "wp-includes" . DIRECTORY_SEPARATOR . "class-phpass.php");

2. PasswordHash클래스 의 객체를 만듭니다 :

$wp_hasher = new PasswordHash(8, true);

3. CheckPassword사용자를 인증하기위한 함수 호출 :

$check = $wp_hasher->CheckPassword($password, $row['user_pass']);

4. $check변수 확인 :

if($check) {
   echo "password is correct";
} else {
   echo "password is incorrect";
}

참고 : $password일반 텍스트로 된 해시되지 않은 암호 인 반면 $row['user_pass']데이터베이스에서 가져 오는 데 필요한 해시 된 암호입니다.