(Php 5> = 5.5.0, Php 7, Php 8)
password_hash - Tạo mật khẩu băm — Creates a password hash
Sự mô tả
password_hash (chuỗi $password
, chuỗi | int | null $algo
, mảng $options
= []): chuỗi(string $password
, string|int|null $algo
, array $options
= []):
string
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 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). - 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_BCRYPT
- Sử dụng thuật toán CRYPT_BLOWFISH
để 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ặc $2y$12$QjSH496pcT5CEbzjD/vtVeH03tfHKFy36d4J0Ltp3lRtee9HDxY3K
0 khi thất bại. - Use the CRYPT_BLOWFISH
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, or $2y$12$QjSH496pcT5CEbzjD/vtVeH03tfHKFy36d4J0Ltp3lRtee9HDxY3K
0 on failure. -
$2y$12$QjSH496pcT5CEbzjD/vtVeH03tfHKFy36d4J0Ltp3lRtee9HDxY3K
1 - 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. - Use the Argon2i hashing algorithm to create
the hash. This algorithm is only available if PHP has been compiled with Argon2 support. -
$2y$12$QjSH496pcT5CEbzjD/vtVeH03tfHKFy36d4J0Ltp3lRtee9HDxY3K
2 - 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. - Use the Argon2id hashing algorithm to create the hash. This algorithm is only available if PHP has been compiled with Argon2 support.
Các tùy chọn được hỗ trợ cho PASSWORD_BCRYPT
:PASSWORD_BCRYPT
:
$2y$12$QjSH496pcT5CEbzjD/vtVeH03tfHKFy36d4J0Ltp3lRtee9HDxY3K
4 (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.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. 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.password_hash() for each password hashed. This is the intended mode of operation.
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
5 (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) - which denotes the algorithmic cost
that should be used. Examples of these values can be found on the crypt() page. Nếu bị bỏ qua, giá trị mặc định là
$2y$12$QjSH496pcT5CEbzjD/vtVeH03tfHKFy36d4J0Ltp3lRtee9HDxY3K
6 sẽ được sử dụng. Đây là một chi phí cơ bản tốt, nhưng bạn có thể muốn xem xét tăng nó tùy thuộc vào phần cứng của bạn.
Các tùy chọn được hỗ trợ cho
$2y$12$QjSH496pcT5CEbzjD/vtVeH03tfHKFy36d4J0Ltp3lRtee9HDxY3K
1 và $2y$12$QjSH496pcT5CEbzjD/vtVeH03tfHKFy36d4J0Ltp3lRtee9HDxY3K
2:$2y$12$QjSH496pcT5CEbzjD/vtVeH03tfHKFy36d4J0Ltp3lRtee9HDxY3K
1 and $2y$12$QjSH496pcT5CEbzjD/vtVeH03tfHKFy36d4J0Ltp3lRtee9HDxY3K
2:
$2y$12$QjSH496pcT5CEbzjD/vtVeH03tfHKFy36d4J0Ltp3lRtee9HDxY3K
9 (int) - Bộ nhớ tối đa (tính bằng kibibyte) có thể được sử dụng để tính toán băm argon2. Mặc định là Appropriate Cost Found: 10
0.int) - Maximum memory (in
kibibytes) that may be used to compute the Argon2 hash. Defaults to Appropriate Cost Found: 10
0.
Appropriate Cost Found: 10
1 (int) - Khoảng thời gian tối đa có thể mất để tính toán băm argon2. Mặc định là Appropriate Cost Found: 10
2.int) - Maximum amount of time it may take to compute the Argon2 hash. Defaults to Appropriate Cost Found: 10
2.
Appropriate Cost Found: 10
3 (int) - Số lượng luồng để sử dụng để tính toán băm argon2. Mặc định là Appropriate Cost Found: 10
4.int) - Number of threads to use for computing the Argon2 hash. Defaults to Appropriate Cost Found: 10
4. 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
5 (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 ().
Nếu bị bỏ qua, giá trị mặc định là $2y$12$QjSH496pcT5CEbzjD/vtVeH03tfHKFy36d4J0Ltp3lRtee9HDxY3K
6 sẽ được sử dụng. Đây là một chi phí cơ bản tốt, nhưng bạn có thể muốn xem xét tăng nó tùy thuộc vào phần cứng của bạn. Các tùy chọn được hỗ trợ cho
$2y$12$QjSH496pcT5CEbzjD/vtVeH03tfHKFy36d4J0Ltp3lRtee9HDxY3K
1 và $2y$12$QjSH496pcT5CEbzjD/vtVeH03tfHKFy36d4J0Ltp3lRtee9HDxY3K
2: $2y$12$QjSH496pcT5CEbzjD/vtVeH03tfHKFy36d4J0Ltp3lRtee9HDxY3K
9 (int) - Bộ nhớ tối đa (tính bằng kibibyte) có thể được sử dụng để tính toán băm argon2. Mặc định là Appropriate Cost Found: 10
0.
Appropriate Cost Found: 10
1 (int) - Khoảng thời gian tối đa có thể mất để tính toán băm argon2. Mặc định là Appropriate Cost Found: 10
2.PASSWORD_BCRYPT
as the algorithm, will result in the Appropriate Cost Found: 10
5 parameter being truncated to a maximum length of 72 bytes. Appropriate Cost Found: 10
3 (int) - Số lượng luồng để sử dụng để tính toán băm argon2. Mặc định là Appropriate Cost Found: 10
4. Chỉ có sẵn khi PHP sử dụng libargon2, không phải với việc thực hiện libsodium.
Thông số
Appropriate Cost Found: 10
5 Mật khẩu của người dùng.
Thận trọng
Sử dụng PASSWORD_BCRYPT
làm thuật toán, sẽ dẫn đến tham số
Appropriate Cost Found: 10
5 bị cắt theo chiều dài tối đa là 72 byte.
Appropriate Cost Found: 10
8password_verify() function to verify the hash without needing separate storage for the salt or algorithm information.
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.
Appropriate Cost Found: 10
9 | Sự mô tả |
---|
8.0.0 | 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. no longer returns $2y$12$QjSH496pcT5CEbzjD/vtVeH03tfHKFy36d4J0Ltp3lRtee9HDxY3K
0 on failure.
|
8.0.0 | 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. |
7.4.0 | Trả về giá trịstring now, but still accepts ints for backward compatibility.
|
7.4.0 | Trả về mật khẩu băm. |
7.3.0 | 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.$2y$12$QjSH496pcT5CEbzjD/vtVeH03tfHKFy36d4J0Ltp3lRtee9HDxY3K
2 was added.
|
7.2.0 | Thay đổi$2y$12$QjSH496pcT5CEbzjD/vtVeH03tfHKFy36d4J0Ltp3lRtee9HDxY3K
1 was added.
|
Phiên bản
password_hash () không còn trả về $2y$12$QjSH496pcT5CEbzjD/vtVeH03tfHKFy36d4J0Ltp3lRtee9HDxY3K
0 khi thất bại.password_hash() example
Argon2i hash: $argon2i$v=19$m=1024,t=2,p=2$YzJBSzV4TUhkMzc3d3laeg$zqU/1IN0/AogfP4cmSJI1vc8lpXRW9/S0sYY2i2jHT0
5 Tham số
Appropriate Cost Found: 10
8 bây giờ là không thể.$2y$10$.vGA1O9wmRjrwAVXD98HNOgsNpDczlqm3Jq7KnEd1rVAGv3Fykk1a
Tham số Appropriate Cost Found: 10
8 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.password_hash() example setting cost manually
Argon2i hash: $argon2i$v=19$m=1024,t=2,p=2$YzJBSzV4TUhkMzc3d3laeg$zqU/1IN0/AogfP4cmSJI1vc8lpXRW9/S0sYY2i2jHT0
6 Tham số
Appropriate Cost Found: 10
8 bây giờ là không thể.$2y$12$QjSH496pcT5CEbzjD/vtVeH03tfHKFy36d4J0Ltp3lRtee9HDxY3K
Tham số Appropriate Cost Found: 10
8 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.password_hash() example finding a good cost
Argon2i hash: $argon2i$v=19$m=1024,t=2,p=2$YzJBSzV4TUhkMzc3d3laeg$zqU/1IN0/AogfP4cmSJI1vc8lpXRW9/S0sYY2i2jHT0
7Argon2i hash: $argon2i$v=19$m=1024,t=2,p=2$YzJBSzV4TUhkMzc3d3laeg$zqU/1IN0/AogfP4cmSJI1vc8lpXRW9/S0sYY2i2jHT0
8Argon2i hash: $argon2i$v=19$m=1024,t=2,p=2$YzJBSzV4TUhkMzc3d3laeg$zqU/1IN0/AogfP4cmSJI1vc8lpXRW9/S0sYY2i2jHT0
9 Tham số
Appropriate Cost Found: 10
8 bây giờ là không thể.Appropriate Cost Found: 10
Tham số Appropriate Cost Found: 10
8 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.password_hash() example using Argon2i
$password
0
Tham số
Appropriate Cost Found: 10
8 bây giờ là không thể.Argon2i hash: $argon2i$v=19$m=1024,t=2,p=2$YzJBSzV4TUhkMzc3d3laeg$zqU/1IN0/AogfP4cmSJI1vc8lpXRW9/S0sYY2i2jHT0
Tham số Appropriate Cost Found: 10
8 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.
$2y$12$QjSH496pcT5CEbzjD/vtVeH03tfHKFy36d4J0Ltp3lRtee9HDxY3K
9 (int) - Bộ nhớ tối đa (tính bằng kibibyte) có thể được sử dụng để tính toán băm argon2. Mặc định là Appropriate Cost Found: 10
0.
Appropriate Cost Found: 10
1 (int) - Khoảng thời gian tối đa có thể mất để tính toán băm argon2. Mặc định là Appropriate Cost Found: 10
2.
Appropriate Cost Found: 10
3 (int) - Số lượng luồng để sử dụng để tính toán băm argon2. Mặc định là Appropriate Cost Found: 10
4.
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:: Updates to supported algorithms by this function (or changes to the default one) must follow the following rules:
- 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
- natri_crypto_pwhash_str () - Nhận băm được mã hóa ASCII -được mã hóa
PHPNetComment201908 tại Lucb1e Dot Com ¶ ¶
3 năm trước
$password
2
$password
3
$password
4
$password
5
$password
6
$password
7
$password
8
$password
9
$algo
0
$algo
1
$algo
2
$algo
3
$algo
4
$algo
5
Nicoswd ¶ ¶
9 năm trước
$algo
6
$algo
7
$algo
8
$algo
9
$options
0
$options
1
$algo
5 Lyo mi ¶
6 năm trước
$options
3
$options
4
$options
5
$options
6
$options
7
$algo
5 Cloxy ¶ ¶
8 năm trước
$options
9
PASSWORD_DEFAULT
0
PASSWORD_DEFAULT
1
PASSWORD_DEFAULT
2
Martinstoeckli ¶ ¶
9 năm trước
PASSWORD_DEFAULT
3
Lyo mi ¶
8 năm trước
PASSWORD_DEFAULT
4
PASSWORD_DEFAULT
5
$algo
5 Martinstoeckli ¶ ¶
Mike Robinson ¶
PASSWORD_DEFAULT
7
PASSWORD_DEFAULT
8
PASSWORD_DEFAULT
9
PASSWORD_BCRYPT
0
PASSWORD_BCRYPT
1
PASSWORD_BCRYPT
2
PASSWORD_BCRYPT
3
PASSWORD_BCRYPT
4
PASSWORD_BCRYPT
5
PASSWORD_BCRYPT
6
PASSWORD_BCRYPT
7
$algo
5 MS1 tại rdrecs dot com ¶ ¶
3 năm trước
PASSWORD_BCRYPT
9
CRYPT_BLOWFISH
0
CRYPT_BLOWFISH
1
$algo
5 Nicoswd ¶ ¶
Mike Robinson ¶
CRYPT_BLOWFISH
3
CRYPT_BLOWFISH
4
$algo
5 MS1 tại rdrecs dot com ¶ ¶
Mike Robinson ¶
CRYPT_BLOWFISH
6
CRYPT_BLOWFISH
7
$algo
5
MS1 tại rdrecs dot com ¶ ¶
3 năm trước
CRYPT_BLOWFISH
9
$2y$12$QjSH496pcT5CEbzjD/vtVeH03tfHKFy36d4J0Ltp3lRtee9HDxY3K
00$2y$12$QjSH496pcT5CEbzjD/vtVeH03tfHKFy36d4J0Ltp3lRtee9HDxY3K
01$2y$12$QjSH496pcT5CEbzjD/vtVeH03tfHKFy36d4J0Ltp3lRtee9HDxY3K
02$2y$12$QjSH496pcT5CEbzjD/vtVeH03tfHKFy36d4J0Ltp3lRtee9HDxY3K
03$algo
5Những gì bạn cần làm là lấy truy vấn cơ sở dữ liệu cho bản ghi qua email sau đó so sánh mật khẩu băm được trả lại từ cơ sở dữ liệu với mật khẩu đầu vào bằng password_verify (). Thực hiện theo các bước đơn giản để xác minh người dùng. 1. Chạy truy vấn cơ sở dữ liệu để lấy người dùng qua email để lấy mật khẩu băm.get the query the database for the record by email then compare the password hash returned from the database with the input password using password_verify(). Follow the simple steps to verify the user. 1. Run the database query to get user by email to get the hashed password.
Giải mã mật khẩu: Để giải mã mật khẩu băm và truy xuất chuỗi gốc, chúng tôi sử dụng hàm password_verify ().Hàm password_verify () xác minh rằng băm đã cho khớp với mật khẩu đã cho, được tạo bởi hàm password_hash ().use the password_verify() function. The password_verify() function verifies that the given hash matches the given password, generated by the password_hash() function.
Thoạt nhìn, băm có thể trông giống như mã hóa nhưng băm là hàm một chiều trong khi mã hóa là hàm hai chiều.Nói cách khác, bạn không thể hoàn nguyên mật khẩu băm, còn được gọi là băm, trở lại giá trị văn bản đơn giản của nó trong khi có thể làm điều đó với các giá trị được mã hóa.you cannot revert a hashed password, also known as a hash, back to its original plain-text value while it is possible to do that with encrypted values.
Trên tất cả các hệ thống không sử dụng Active Directory, băm mật khẩu được lưu trữ trong sổ đăng ký hệ thống và chương trình có thể trích xuất chúng từ sổ đăng ký, ngay cả khi chúng được mã hóa bằng Syskey.stored in the system Registry, and the program can extract them from the Registry, even if they are encrypted using SYSKEY.