[Php 5> = 5.5.0, Php 7, Php 8]
password_verify - xác minh rằng mật khẩu khớp với băm — Verifies that a password matches a hash
Sự mô tả
password_verify [chuỗi $password
, chuỗi $hash
]: bool[string $password
, string $hash
]: bool
Lưu ý rằng password_hash [] trả về thuật toán, chi phí và muối như một phần của băm đã trả lại. Do đó, tất cả thông tin cần thiết để xác minh hàm băm được bao gồm trong đó. Điều này cho phép chức năng xác minh xác minh băm mà không cần lưu trữ riêng cho thông tin muối hoặc thuật toán.password_hash[] returns the algorithm, cost and salt as part of the returned hash. Therefore, all information that's needed to verify the hash is included in it. This allows the verify function to verify the hash without needing separate storage for the salt or algorithm information.
Chức năng này là an toàn trước các cuộc tấn công thời gian.
Thông số
password
Mật khẩu của người dùng.
hash
Một hàm băm được tạo bởi password_hash [].password_hash[].
Trả về giá trị
Trả về true
nếu mật khẩu và băm phù hợp, hoặc false
khác.true
if the password and hash match, or false
otherwise.
Ví dụ
Ví dụ #1 password_verify [] Ví dụpassword_verify[] example
$2y$12$QjSH496pcT5CEbzjD/vtVeH03tfHKFy36d4J0Ltp3lRtee9HDxY3K0
$2y$12$QjSH496pcT5CEbzjD/vtVeH03tfHKFy36d4J0Ltp3lRtee9HDxY3K1
$2y$12$QjSH496pcT5CEbzjD/vtVeH03tfHKFy36d4J0Ltp3lRtee9HDxY3K2
Ví dụ trên sẽ xuất ra:
Xem thêm
- password_hash [] - Tạo mật khẩu băm
- »& Nbsp; triển khai userland
- natri_crypto_pwhash_str_verify [] - xác minh rằng mật khẩu khớp với băm
password_hash [] tạo một hàm băm mật khẩu mới bằng thuật toán băm một chiều mạnh mẽ. Các thuật toán sau đây hiện đang được hỗ trợ: password_default - Sử dụng thuật toán BCRYPT [mặc định là Php 5.5. 0]. Lưu ý rằng hằng số này được thiết kế để thay đổi theo thời gian vì các thuật toán mới và mạnh hơn được thêm vào PHP.
Mật khẩu băm có giống như mật khẩu không? — Creates a password hash
Mật khẩu băm về cơ bản là một biểu diễn được xáo trộn, không thể đọc được của mật khẩu gốc. Mật khẩu băm là tuyệt vời cho bảo mật vì nó là chức năng một chiều. Các thuật toán băm thường được sử dụng bao gồm các thuật toán tiêu hóa tin nhắn [MDX] như thuật toán băm MD5 và bảo mật [SHA] như SHA-1 và SHA-2.
Làm thế nào để bạn khớp với mật khẩu băm?[string $password
, string|int|null $2y$12$QjSH496pcT5CEbzjD/vtVeH03tfHKFy36d4J0Ltp3lRtee9HDxY3K
4, array $2y$12$QjSH496pcT5CEbzjD/vtVeH03tfHKFy36d4J0Ltp3lRtee9HDxY3K
5 = []]:
string
Bạn sẽ cần xác minh mật khẩu người dùng để xem chúng có khớp với mật khẩu được lưu trữ trong cơ sở dữ liệu không. Để làm điều này, chúng tôi gọi kiểm tra [] trên mặt tiền băm. Phương thức kiểm tra [] xác minh nếu chuỗi văn bản đơn giản được nhập bởi người dùng khớp với băm đã cho.
- [Php 5> = 5.5.0, Php 7, Php 8] - Use the bcrypt algorithm [default as of PHP 5.5.0]. Note that this constant is designed to change over time as new and stronger algorithms are added to PHP. For that reason, the length of the result from using this identifier can change over time. Therefore, it is recommended to store the result in a database column that can expand beyond 60 characters [255 characters would be a good choice].
- password_hash - Tạo mật khẩu băm - Use the
$2y$12$QjSH496pcT5CEbzjD/vtVeH03tfHKFy36d4J0Ltp3lRtee9HDxY3K
8 algorithm to create the hash. This will produce a standard crypt[] compatible hash using the "$2y$" identifier. The result will always be a 60 character string, orfalse
on failure. - Sự mô tả - Use the Argon2i hashing algorithm to create the hash. This algorithm is only available if PHP has been compiled with Argon2 support.
- password_hash [chuỗi
$password
, chuỗi | int | null$2y$12$QjSH496pcT5CEbzjD/vtVeH03tfHKFy36d4J0Ltp3lRtee9HDxY3K
4, mảng$2y$12$QjSH496pcT5CEbzjD/vtVeH03tfHKFy36d4J0Ltp3lRtee9HDxY3K
5 = []]: Chuỗi - Use the Argon2id hashing algorithm to create the hash. This algorithm is only available if PHP has been compiled with Argon2 support.
Các thuật toán sau đây hiện đang được hỗ trợ:$2y$12$QjSH496pcT5CEbzjD/vtVeH03tfHKFy36d4J0Ltp3lRtee9HDxY3K
7:
$2y$12$QjSH496pcT5CEbzjD/vtVeH03tfHKFy36d4J0Ltp3lRtee9HDxY3K
6 - Sử dụng thuật toán BCRYPT [mặc định kể từ Php 5.5.0]. Lưu ý rằng hằng số này được thiết kế để thay đổi theo thời gian vì các thuật toán mới và mạnh hơn được thêm vào PHP. Vì lý do đó, độ dài của kết quả từ việc sử dụng định danh này có thể thay đổi theo thời gian. Do đó, nên lưu trữ kết quả trong cột cơ sở dữ liệu có thể mở rộng vượt quá 60 ký tự [255 ký tự sẽ là một lựa chọn tốt].string] - to manually provide a salt to use when hashing the password. Note that this will override and prevent a salt from being automatically generated.$2y$12$QjSH496pcT5CEbzjD/vtVeH03tfHKFy36d4J0Ltp3lRtee9HDxY3K
7 - Sử dụng thuật toán$2y$12$QjSH496pcT5CEbzjD/vtVeH03tfHKFy36d4J0Ltp3lRtee9HDxY3K
8 để tạo băm. Điều này sẽ tạo ra một hàm băm tương thích Crypt [] tiêu chuẩn sử dụng định danh "$ 2y $". Kết quả sẽ luôn là chuỗi 60 ký tự hoặcfalse
khi thất bại.password_hash[] for each password hashed. This is the intended mode of operation.Appropriate Cost Found: 10
0 - Sử dụng thuật toán băm argon2i để tạo băm. Thuật toán này chỉ khả dụng nếu PHP đã được biên dịch với hỗ trợ argon2.Appropriate Cost Found: 10
1 - Sử dụng thuật toán băm argon2id để tạo băm. Thuật toán này chỉ khả dụng nếu PHP đã được biên dịch với hỗ trợ argon2.Các tùy chọn được hỗ trợ cho
$2y$12$QjSH496pcT5CEbzjD/vtVeH03tfHKFy36d4J0Ltp3lRtee9HDxY3K
7:int] - which denotes the algorithmic cost that should be used. Examples of these values can be found on the crypt[] page.Appropriate Cost Found: 10
3 [Chuỗi] - Để cung cấp muối theo cách thủ công khi sử dụng khi băm mật khẩu. Lưu ý rằng điều này sẽ ghi đè và ngăn muối được tự động tạo.
Nếu bị bỏ qua, một loại muối ngẫu nhiên sẽ được tạo bằng password_hash [] cho mỗi mật khẩu băm. Đây là chế độ hoạt động dự định.Appropriate Cost Found: 10
0 and Appropriate Cost Found: 10
1:
Cảnh báoint] - Maximum memory [in kibibytes] that may be used to compute the Argon2 hash. Defaults to
Appropriate Cost Found: 10
9.Tùy chọn muối không được chấp nhận. Bây giờ nó được ưu tiên chỉ sử dụng muối được tạo theo mặc định. Kể từ Php 8.0.0, một loại muối được đưa ra rõ ràng bị bỏ qua.int] - Maximum amount of time it may take to compute the Argon2 hash. Defaults to
Argon2i hash: $argon2i$v=19$m=1024,t=2,p=2$YzJBSzV4TUhkMzc3d3laeg$zqU/1IN0/AogfP4cmSJI1vc8lpXRW9/S0sYY2i2jHT0
1.Appropriate Cost Found: 10
4 [int] - biểu thị chi phí thuật toán nên được sử dụng. Ví dụ về các giá trị này có thể được tìm thấy trên trang Crypt [].int] - Number of threads to use for computing the Argon2 hash. Defaults toArgon2i hash: $argon2i$v=19$m=1024,t=2,p=2$YzJBSzV4TUhkMzc3d3laeg$zqU/1IN0/AogfP4cmSJI1vc8lpXRW9/S0sYY2i2jHT0
3.Appropriate Cost Found: 10
0 - Sử dụng thuật toán băm argon2i để tạo băm. Thuật toán này chỉ khả dụng nếu PHP đã được biên dịch với hỗ trợ argon2.Appropriate Cost Found: 10
1 - Sử dụng thuật toán băm argon2id để tạo băm. Thuật toán này chỉ khả dụng nếu PHP đã được biên dịch với hỗ trợ argon2.
Các tùy chọn được hỗ trợ cho $2y$12$QjSH496pcT5CEbzjD/vtVeH03tfHKFy36d4J0Ltp3lRtee9HDxY3K
7:
Appropriate Cost Found: 103 [Chuỗi] - Để cung cấp muối theo cách thủ công khi sử dụng khi băm mật khẩu. Lưu ý rằng điều này sẽ ghi đè và ngăn muối được tự động tạo.
Nếu bị bỏ qua, một loại muối ngẫu nhiên sẽ được tạo bằng password_hash [] cho mỗi mật khẩu băm. Đây là chế độ hoạt động dự định.
Cảnh báo
Tùy chọn muối không được chấp nhận. Bây giờ nó được ưu tiên chỉ sử dụng muối được tạo theo mặc định. Kể từ Php 8.0.0, một loại muối được đưa ra rõ ràng bị bỏ qua.$2y$12$QjSH496pcT5CEbzjD/vtVeH03tfHKFy36d4J0Ltp3lRtee9HDxY3K
7 as the algorithm, will result in the password
parameter being truncated to a maximum length of 72 bytes.
Argon2i hash: $argon2i$v=19$m=1024,t=2,p=2$YzJBSzV4TUhkMzc3d3laeg$zqU/1IN0/AogfP4cmSJI1vc8lpXRW9/S0sYY2i2jHT07
Một thuật toán mật khẩu hằng số biểu thị thuật toán sẽ sử dụng khi băm mật khẩu.
Argon2i hash: $argon2i$v=19$m=1024,t=2,p=2$YzJBSzV4TUhkMzc3d3laeg$zqU/1IN0/AogfP4cmSJI1vc8lpXRW9/S0sYY2i2jHT08
Một mảng kết hợp có chứa các tùy chọn. Xem các hằng số thuật toán mật khẩu để biết tài liệu về các tùy chọn được hỗ trợ cho mỗi thuật toán.
Nếu bị bỏ qua, một loại muối ngẫu nhiên sẽ được tạo ra và chi phí mặc định sẽ được sử dụng.
Trả về giá trị
Trả về mật khẩu băm.
Thuật toán đã sử dụng, chi phí và muối được trả lại như một phần của băm. Do đó, tất cả thông tin cần thiết để xác minh hàm băm được bao gồm trong đó. Điều này cho phép hàm password_verify [] xác minh băm mà không cần lưu trữ riêng cho thông tin muối hoặc thuật toán.password_verify[] function to verify the hash without needing separate storage for the salt or algorithm information.
Thay đổi
8.0.0 | password_hash [] không còn trả về false khi thất bại. no longer returns false on failure.
|
8.0.0 | Tham số Argon2i hash: $argon2i$v=19$m=1024,t=2,p=2$YzJBSzV4TUhkMzc3d3laeg$zqU/1IN0/AogfP4cmSJI1vc8lpXRW9/S0sYY2i2jHT07 bây giờ là không thể. |
7.4.0 | Tham số Argon2i hash: $argon2i$v=19$m=1024,t=2,p=2$YzJBSzV4TUhkMzc3d3laeg$zqU/1IN0/AogfP4cmSJI1vc8lpXRW9/S0sYY2i2jHT07 mong đợi một chuỗi bây giờ, nhưng vẫn chấp nhận INTS cho khả năng tương thích ngược.string now, but still accepts ints for backward compatibility. |
7.4.0 | Phần mở rộng natri cung cấp một triển khai thay thế cho mật khẩu argon2. |
7.3.0 | Hỗ trợ mật khẩu argon2id bằng cách sử dụng Appropriate Cost Found: 101 đã được thêm vào. Appropriate Cost Found: 101 was added. |
7.2.0 | Hỗ trợ mật khẩu argon2i bằng cách sử dụng Appropriate Cost Found: 100 đã được thêm vào. Appropriate Cost Found: 100 was added. |
Ví dụ
Ví dụ #1 password_hash [] ví dụpassword_hash[] example
$password
4
Ví dụ trên sẽ xuất ra một cái gì đó tương tự như:
$2y$10$.vGA1O9wmRjrwAVXD98HNOgsNpDczlqm3Jq7KnEd1rVAGv3Fykk1a
Ví dụ #2 password_hash [] Cài đặt ví dụ về chi phí theo cách thủ côngpassword_hash[] example setting cost manually
$password
5
Ví dụ trên sẽ xuất ra một cái gì đó tương tự như:
$2y$12$QjSH496pcT5CEbzjD/vtVeH03tfHKFy36d4J0Ltp3lRtee9HDxY3K
Ví dụ #2 password_hash [] Cài đặt ví dụ về chi phí theo cách thủ côngpassword_hash[] example finding a good cost
$password
6
$password
7
$password
8Ví dụ trên sẽ xuất ra một cái gì đó tương tự như:
Appropriate Cost Found: 10
Ví dụ #2 password_hash [] Cài đặt ví dụ về chi phí theo cách thủ côngpassword_hash[] example using Argon2i
$password
9
Ví dụ trên sẽ xuất ra một cái gì đó tương tự như:
Argon2i hash: $argon2i$v=19$m=1024,t=2,p=2$YzJBSzV4TUhkMzc3d3laeg$zqU/1IN0/AogfP4cmSJI1vc8lpXRW9/S0sYY2i2jHT0
Ví dụ #2 password_hash [] Cài đặt ví dụ về chi phí theo cách thủ công
Ví dụ #3 password_hash [] Ví dụ tìm kiếm một chi phí tốt
Ví dụ #4 password_hash [] Ví dụ sử dụng argon2i
Ghi chú
Thận trọng:
Chúng tôi khuyên bạn nên không tạo ra muối của riêng bạn cho chức năng này. Nó sẽ tự động tạo một loại muối an toàn cho bạn nếu bạn không chỉ định một loại.
Như đã lưu ý ở trên, việc cung cấp tùy chọn
Appropriate Cost Found: 103 trong Php 7.0 sẽ tạo ra cảnh báo không dùng nữa. Hỗ trợ cung cấp muối bằng tay có thể được loại bỏ trong bản phát hành PHP trong tương lai.: Updates to supported algorithms by this function [or changes to the default one] must follow the following rules:
- Ghi chú:
- Bạn nên kiểm tra chức năng này trên máy chủ của mình và điều chỉnh tham số chi phí để thực hiện chức năng mất ít hơn 100 mili giây trên các hệ thống tương tác. Kịch bản trong ví dụ trên sẽ giúp bạn chọn giá trị chi phí tốt cho phần cứng của mình.
Lưu ý: Cập nhật các thuật toán được hỗ trợ bởi hàm này [hoặc thay đổi đối với một mặc định] phải tuân theo các quy tắc sau:
- Bất kỳ thuật toán mới nào cũng phải nằm trong lõi cho ít nhất 1 phát hành PHP đầy đủ trước khi trở thành mặc định. Vì vậy, nếu, ví dụ, một thuật toán mới được thêm vào trong 7.5.5, nó sẽ không đủ điều kiện mặc định cho đến 7.7 [vì 7.6 sẽ là bản phát hành đầy đủ đầu tiên]. Nhưng nếu một thuật toán khác được thêm vào trong 7.6.0, thì nó cũng sẽ đủ điều kiện mặc định ở mức 7.7.0.
- Mặc định chỉ nên thay đổi trong bản phát hành đầy đủ [7.3.0, 8.0.0, v.v.] và không trong bản phát hành sửa đổi. Ngoại lệ duy nhất cho điều này là trong trường hợp khẩn cấp khi lỗ hổng bảo mật quan trọng được tìm thấy trong mặc định hiện tại.
- Xem thêm
- password_verify [] - xác minh rằng mật khẩu khớp với băm
Crypt [] - Chuỗi một chiều băm ¶
»& Nbsp; triển khai userland
$hash
1
$hash
2
$hash
3
$hash
4
$hash
5
$hash
6
$hash
7
$hash
8
$hash
9
password
0
password
1
password
2
password
3
password
4natri_crypto_pwhash_str [] - Nhận băm được mã hóa ASCII -được mã hóa ¶
PHPNetComment201908 tại Lucb1e Dot Com ¶
password
5
password
6
password
7
password
8
password
9
hash
0
password
43 năm trước ¶
Nicoswd ¶
hash
2
hash
3
hash
4
hash
5
hash
6
password
49 năm trước ¶
PHPNetComment201908 tại Lucb1e Dot Com ¶
hash
8
hash
9
true
0
true
13 năm trước ¶
PHPNetComment201908 tại Lucb1e Dot Com ¶
true
2
3 năm trước ¶
Nicoswd ¶
true
3
true
4
password
49 năm trước ¶
»& Nbsp; triển khai userland
true
6
true
7
true
8
true
9
false
0
false
1
false
2
false
3
false
4
false
5
false
6
password
4natri_crypto_pwhash_str [] - Nhận băm được mã hóa ASCII -được mã hóa ¶
PHPNetComment201908 tại Lucb1e Dot Com ¶
false
8
false
9
password
43 năm trước ¶
»& Nbsp; triển khai userland
$2y$12$QjSH496pcT5CEbzjD/vtVeH03tfHKFy36d4J0Ltp3lRtee9HDxY3K01
$2y$12$QjSH496pcT5CEbzjD/vtVeH03tfHKFy36d4J0Ltp3lRtee9HDxY3K02
$2y$12$QjSH496pcT5CEbzjD/vtVeH03tfHKFy36d4J0Ltp3lRtee9HDxY3K03
password
43 năm trước ¶
PHPNetComment201908 tại Lucb1e Dot Com ¶
$2y$12$QjSH496pcT5CEbzjD/vtVeH03tfHKFy36d4J0Ltp3lRtee9HDxY3K05
$2y$12$QjSH496pcT5CEbzjD/vtVeH03tfHKFy36d4J0Ltp3lRtee9HDxY3K06
password
4
3 năm trước ¶
»& Nbsp; triển khai userland
$2y$12$QjSH496pcT5CEbzjD/vtVeH03tfHKFy36d4J0Ltp3lRtee9HDxY3K08
$2y$12$QjSH496pcT5CEbzjD/vtVeH03tfHKFy36d4J0Ltp3lRtee9HDxY3K09
$2y$12$QjSH496pcT5CEbzjD/vtVeH03tfHKFy36d4J0Ltp3lRtee9HDxY3K10
$2y$12$QjSH496pcT5CEbzjD/vtVeH03tfHKFy36d4J0Ltp3lRtee9HDxY3K11
$2y$12$QjSH496pcT5CEbzjD/vtVeH03tfHKFy36d4J0Ltp3lRtee9HDxY3K12
password
4