Làm cách nào để sử dụng SHA 256 trong PHP?

Hàm hash() trả về giá trị băm cho dữ liệu đã cho dựa trên thuật toán như (md5, sha256). Giá trị trả về là một chuỗi có hexit (giá trị thập lục phân)

cú pháp

hash ( string $algo , string $data [, bool $raw_output = FALSE ] ) : string

Thông số

Sr. STT Thông số và Mô tả 1

thuật toán

Tên thuật toán băm. Có một danh sách lớn các thuật toán có sẵn với hàm băm, một số thuật toán quan trọng là md5, sha256, v.v.
Để có danh sách đầy đủ các thuật toán được hỗ trợ, hãy sử dụng hàm băm hash_algos()

2

dữ liệu

Dữ liệu bạn muốn băm được tạo. Xin lưu ý rằng một khi hàm băm được tạo, nó không thể bị đảo ngược

3

raw_output

Theo mặc định, giá trị là sai và do đó, nó trả về các giá trị hexit chữ thường. Nếu giá trị là true, nó sẽ trả về dữ liệu nhị phân thô

Giá trị trả về

Hàm hash() trong PHP trả về một chuỗi có chữ thường hexits. Nếu raw_output được đặt thành true, nó sẽ trả về dữ liệu nhị phân thô

PHP có một trong những chức năng mã hóa tốt nhất được sử dụng để bảo mật dữ liệu. Chức năng mã hóa Hash_hmac() là một trong những bộ mã hóa nổi tiếng nhất

Chúng tôi sẽ chỉ cho bạn cách sử dụng hash_hmac với bộ mã hóa sha256 để tạo một '.$hash_it.' "; ?> 0, một khóa bí mật mà bạn có thể lưu trữ trong cơ sở dữ liệu hoặc sử dụng trong biểu mẫu đăng nhập của mình

Hàm '.$hash_it.' "; ?> 1 trong PHP

'.$hash_it.' "; ?> 1 tạo một giá trị băm bí mật có khóa bằng chữ và số. Nó sử dụng kỹ thuật xác thực mật mã được gọi là phương thức '.$hash_it.' "; ?> 3

cú pháp

hash_hmac($algo, $data, $key, $binary = false);

  1. '.$hash_it.' "; ?> 4 là một trong các tham số hash_hmac, được sử dụng làm giá trị băm có khóa bí mật chữ ký ( '.$hash_it.' "; ?> 5)
  2. '.$hash_it.' "; ?> 6, giá trị được băm (thường là mật khẩu của người dùng). Nó có thể là chữ và số
  3. '.$hash_it.' "; ?> 7 được tạo từ phương thức '.$hash_it.' "; ?> 3, một khóa bí mật mà bạn nhận được từ hàm và các cách sử dụng lập trình khác
  4. Tham số cuối cùng '.$hash_it.' "; ?> 9 là giá trị nhị phân

Nó trả về dữ liệu thô khi Your encrypted signature is: '.46e9757dc98f478c28f035cfa871dbd19b5a2bf8273225191bcca78801304813 0 và đưa ra các dấu thập lục phân chữ thường khi Your encrypted signature is: '.46e9757dc98f478c28f035cfa871dbd19b5a2bf8273225191bcca78801304813 1

Sử dụng '.$hash_it.' "; ?> 1 Với sha256 trong PHP

Thí dụ

'.$hash_it.' "; ?>

đầu ra

Your encrypted signature is: '.46e9757dc98f478c28f035cfa871dbd19b5a2bf8273225191bcca78801304813

Sử dụng '.$hash_it.' "; ?> 1 Với Your encrypted signature is: '.46e9757dc98f478c28f035cfa871dbd19b5a2bf8273225191bcca78801304813 5

Nếu bạn muốn chữ ký được mã hóa của mình an toàn hơn, bạn cũng có thể thực hiện đoạn mã sau

Thí dụ

$base64_encode.' "; } ?>

đầu ra

Your base64_decode(hash_hmac()); encrypted signature is is: '.00g0QmqlnluXxijqot60WZf6InDi07b/Mb5lL7eVZ34

Sử dụng '.$hash_it.' "; ?> 1 Với sha256 và áp dụng chuyển đổi Your encrypted signature is: '.46e9757dc98f478c28f035cfa871dbd19b5a2bf8273225191bcca78801304813 8/Your encrypted signature is: '.46e9757dc98f478c28f035cfa871dbd19b5a2bf8273225191bcca78801304813 9 trong PHP

  • $base64_encode.' "; } ?> 0 - Hàm này giải mã một chuỗi nhị phân đã được mã hóa ở dạng thập lục phân
  • $base64_encode.' "; } ?> 1 - Một chuỗi ký tự ASCII được chuyển đổi thành giá trị thập lục phân bằng phương pháp $base64_encode.' "; } ?> 1

Giả sử bạn có dữ liệu tài chính quan trọng muốn mã hóa và tạo khóa bí mật cho người dùng

Hàm crypt() trong PHP cho phép bạn tạo hàm băm của chuỗi đã chỉ định bằng nhiều thuật toán băm khác nhau

Một số hàm băm được hỗ trợ của hàm này bao gồm blowfish, SHA-256 và MD5

Nếu bạn định sử dụng hàm này để mã hóa mật khẩu, chúng tôi khuyên bạn nên sử dụng hàm pi6 để thay thế. Hàm này là trình bao bọc cho hàm crypt() của PHP nhưng sử dụng mã hóa mạnh và muối mạnh theo mặc định

Trong một số phần sau, chúng tôi sẽ chỉ cho bạn cách sử dụng hàm crypt() để tạo từng giá trị băm được hỗ trợ cho một chuỗi đã chọn. Vì điều này được kiểm soát thông qua tham số “salt” nên đây không phải là chức năng đơn giản nhất để sử dụng

Cú pháp hàm crypt() của PHP

Chúng ta hãy bắt đầu bằng cách khám phá cú pháp của hàm crypt trong PHP. Cú pháp cho chúng ta thấy hàm này được viết như thế nào và sẽ cung cấp cho bạn ý tưởng cơ bản về cách sử dụng nó

Với cú pháp này, bạn có thể thấy rằng hàm crypt() có hai tham số và trả về một chuỗi sẽ là hàm băm của bạn

crypt(string $string, string $salt): string
  • pi7 – Tham số này là nơi bạn sẽ chỉ định chuỗi bạn muốn được băm bởi PHP

    Tùy thuộc vào loại hàm băm, chuỗi này có thể bị cắt bớt trong quá trình tạo hàm băm, nghĩa là nó sẽ không xem xét toàn bộ chuỗi
  • pi8 – Bạn sẽ sử dụng muối để chỉ định phương pháp băm cũng như “muối” được áp dụng cho hàm băm

    Muối là một cách thay đổi kết quả của hàm băm. Bạn sẽ chỉ có thể tạo cùng một hàm băm với cùng một loại muối. Điều này là để ngăn ai đó tạo ra rất nhiều hàm băm cho các mật khẩu có thể và nhận được kết quả phù hợp rất nhanh

Hàm crypt() sẽ trả về phiên bản đã băm của chuỗi đã truyền vào của bạn. Độ dài của chuỗi này phụ thuộc rất nhiều vào loại muối bạn chuyển vào hàm mật mã

Các phương thức Hash được hỗ trợ cho PHP

Như đã đề cập trước đó, hàm mã hóa trong PHP có hỗ trợ một số phương thức băm khác nhau. Phương pháp băm được chỉ định thông qua tham số muối bằng cách sử dụng một bộ ký tự cụ thể

Chúng tôi sẽ xem xét từng loại băm được hỗ trợ và cách chúng được chỉ định trong các phần sau. Bạn nên nghiên cứu cái nào phù hợp nhất với nhu cầu của bạn

CRYPT_STD_DES

Hàm băm đầu tiên chúng ta sẽ xem xét là hàm băm dựa trên DES tiêu chuẩn. Hàm băm này được chỉ định bằng cách sử dụng muối 2 ký tự

Các ký tự hợp lệ cho loại hàm băm này là “pi9“, “_Pi..SALT0” “_______32_______1” “_Pi..SALT2” và _Pi..SALT3“

Ví dụ: PHP sẽ xem xét giá trị sau đây là muối hợp lệ cho hàm băm “_Pi..SALT4”

pi

CRYPT_EXT_DES

Một phiên bản mở rộng của hàm băm dựa trên DES có một số lợi ích, bao gồm hỗ trợ muối lâu hơn

Muối cho phương pháp băm này phải dài chín ký tự và bắt đầu bằng ký tự gạch dưới (_Pi..SALT5)

Thuật toán sử dụng bốn ký tự đầu tiên sau dấu gạch dưới làm số lần lặp. Mỗi ký tự là 6 bit, với ký tự đầu tiên là ít quan trọng nhất

Bốn ký tự tiếp theo là muối được áp dụng cho hàm băm của bạn

Các giá trị này được mã hóa từ 0 đến 64 bằng cách sử dụng các ký tự “_______27_______9 _Pi..SALT0 _Pi..SALT1 _Pi..SALT2 $1$PIMYLIFE$0“. Khoảng thời gian (pi9) sẽ là 0, và chữ thường $1$PIMYLIFE$2 sẽ là “$1$PIMYLIFE$3“

Dưới đây là một ví dụ về cách đặt hàm băm “$1$PIMYLIFE$4” bằng cách sử dụng tham số muối của các hàm crypt() của PHP

_Pi..SALT

CRYPT_MD5

Hàm băm khác được hỗ trợ bởi hàm crypt() của PHP là MD5. Mặc dù hiện được coi là một hàm băm tương đối yếu, nhưng nó vẫn được sử dụng ngoài phạm vi bảo mật

Bạn cũng có thể sử dụng hàm md5() trong PHP để đạt được điều tương tự như sử dụng loại hàm băm này

Để chỉ định hàm băm MD5 với hàm này, bạn cần bắt đầu muối của mình bằng “$1$PIMYLIFE$5” (số nhận dạng hàm băm) theo sau là tám ký tự (muối) và cuối cùng kết thúc chuỗi bằng một ký hiệu đô la khác ($1$PIMYLIFE$6)

Sau đây là ví dụ về cách đặt muối MD5 bằng hàm crypt() trong PHP

$1$PIMYLIFE$

CRYPT_BLOWFISH

Hàm crypt() cũng hỗ trợ phiên bản bcrypt của mật mã blowfish được thiết kế như một giải pháp thay thế chắc chắn cho tiêu chuẩn DES cũ. Nếu bạn mã hóa dữ liệu như mật khẩu, đây là thuật toán mà bạn có thể sẽ muốn sử dụng trong PHP

Nhờ thiết kế của thuật toán, bạn có thể dần dần làm cho hàm băm mạnh hơn theo thời gian bằng cách tăng số lần lặp lại. Nó củng cố hàm băm vì cần nhiều sức mạnh xử lý hơn để tạo ra hàm băm làm chậm quá trình. Thật không may, một thuật toán nhanh không phù hợp để mã hóa

Để sử dụng tiêu chuẩn mã hóa blowfish trong PHP, bạn cần bắt đầu với “$1$PIMYLIFE$7“. Mặc dù bạn cũng có thể sử dụng “$1$PIMYLIFE$8” và “$1$PIMYLIFE$9“, nhưng cả hai sẽ sử dụng phương pháp băm yếu hơn

Sau mã định danh hàm băm, bạn cần chỉ định chi phí của hàm băm bằng tham số có hai chữ số. Chi phí này phải nằm trong khoảng từ “$2y$06$PiMyLifeUpExampleSalt10” đến “$2y$06$PiMyLifeUpExampleSalt11“. Con số càng cao, càng cần nhiều sức mạnh xử lý để tạo ra hàm băm

Cuối cùng, hàm băm được hoàn thành với hàm băm gồm 22 ký tự. Băm này chỉ được sử dụng các ký tự sau đây “_______27_______9“, “_Pi..SALT0“, “_Pi..SALT1“, “_Pi..SALT2“ và “$1$PIMYLIFE$0“

Sau đây là một ví dụ về muối hợp lệ cho tiêu chuẩn blowfish trên PHP với hàm crypt()

$2y$06$PiMyLifeUpExampleSalt1

CRYPT_SHA256

Sử dụng hàm crypt() của PHP cũng cho phép bạn tạo hàm băm SHA-256 của chuỗi đã chỉ định

Để tạo hàm băm bằng PHP, bạn cần bắt đầu muối với “$2y$06$PiMyLifeUpExampleSalt17“. Điều này cho hàm crypt() biết rằng bạn muốn sử dụng hàm băm SHA-256

Tiếp theo, bạn có thể chỉ định số vòng băm sẽ được thực hiện. Các vòng này tương tự như tùy chọn chi phí của blowfish. Nếu muốn, bạn cần viết “$2y$06$PiMyLifeUpExampleSalt18” sau mã băm. $2y$06$PiMyLifeUpExampleSalt19 là số vòng thực hiện

Blowfish có tối thiểu $5$rounds=6000$PiMyLifeUpExampl$ $5$PiMyLifeUpExampl$0 vòng và tối đa là $5$rounds=6000$PiMyLifeUpExampl$ $5$PiMyLifeUpExampl$1. Bất kỳ giá trị nào nằm ngoài phạm vi này sẽ được làm tròn thành giá trị gần nhất

Nếu không có số nào được chỉ định, thì theo mặc định, PHP sẽ sử dụng ____66_______2 vòng

Cuối cùng, bạn cần chỉ định muối gồm mười sáu ký tự theo sau là ký hiệu đô la ($1$PIMYLIFE$6)

Dưới đây là hai ví dụ về việc sử dụng hàm băm SHA-256 với hàm crypt() của PHP. Trong ví dụ trên cùng, chúng tôi sử dụng tùy chọn vòng và trong ví dụ thứ hai, chúng tôi không

$5$rounds=6000$PiMyLifeUpExampl$ $5$PiMyLifeUpExampl$

CRYPT_SHA512

Hàm băm SHA-512 là phiên bản dài hơn của hàm băm SHA-256. Vì về cơ bản nó là một phiên bản mở rộng của hàm băm, nên cách sử dụng của nó rất giống nhau

Sự khác biệt duy nhất là cách bạn nói với hàm crypt() của PHP rằng bạn muốn tạo hàm băm SHA-512

Để tạo hàm băm SHA-512, bạn sẽ cần bắt đầu muối với “$5$rounds=6000$PiMyLifeUpExampl$ $5$PiMyLifeUpExampl$4“

Sau mã định danh băm, sau đó bạn có thể chỉ định số vòng bạn muốn sử dụng để tạo hàm băm. Giống như SHA-256, điều này được viết bằng cách sử dụng “________ 55 ______ 8” trong đó “$2y$06$PiMyLifeUpExampleSalt19” là số vòng

Cuối cùng, bạn có thể viết muối gồm 16 ký tự theo sau là ký hiệu đô la ($1$PIMYLIFE$6)

Hai ví dụ về hàm băm SHA-256 hợp lệ là những gì chúng tôi đã viết bên dưới. Người ta sử dụng tham số round. Một người không

$6$rounds=6000$PiMyLifeUpExampl$ $6$PiMyLifeUpExampl$

Sử dụng hàm crypt() trong PHP

Phần này sẽ chỉ cho bạn cách sử dụng hàm crypt() trong PHP. Bạn sẽ sử dụng các loại muối khác nhau mà chúng ta đã học trước đây và xem cách chúng hoạt động trong mã thực tế

Đối với ví dụ này, chúng tôi sẽ viết một tập lệnh PHP ngắn sẽ tạo một hàm băm bằng cách sử dụng từng hàm băm được hỗ trợ của hàm crypt()

1. Hãy để chúng tôi bắt đầu tập lệnh này bằng cách khai báo một biến có tên là “pi7“, mà chúng tôi sẽ gán chuỗi PHP $5$rounds=6000$PiMyLifeUpExampl$ $5$PiMyLifeUpExampl$9

Trong suốt phần còn lại của tập lệnh này, chúng tôi sẽ sử dụng một chuỗi này cho từng loại băm khác nhau của chúng tôi. Bằng cách này, bạn có thể thấy mỗi hàm băm khác nhau của PHP crypt() trông như thế nào và chúng được sử dụng như thế nào

$string = "PiMyLifeUp";

2. Với ví dụ đầu tiên của chúng tôi, chúng tôi sẽ sử dụng hàm crypt() của PHP để tạo ra hàm băm DES tiêu chuẩn cho chuỗi của chúng tôi

Chúng tôi thực hiện việc này bằng cách trước tiên chuyển “pi7” vào tham số đầu tiên của hàm crypt(). Tiếp theo, chúng tôi chuyển vào một hai ký tự đơn giản cho muối. Trong ví dụ của chúng tôi, đây sẽ là “$6$rounds=6000$PiMyLifeUpExampl$ $6$PiMyLifeUpExampl$1“

Cuối cùng, chúng ta sử dụng từ khóa echo của PHP để xuất văn bản “Standard DES” theo sau là hàm băm mà chúng ta vừa tạo

$standard_des = crypt($string, "pi"); echo "Standard DES: " . $standard_des . PHP_EOL;

3. Đối với ví dụ tiếp theo của chúng tôi, chúng tôi sẽ tạo một hàm băm DES mở rộng của biến “pi7” của chúng tôi

Lần này khi chúng tôi chỉ định loại muối, chúng tôi sẽ sử dụng “$6$rounds=6000$PiMyLifeUpExampl$ $6$PiMyLifeUpExampl$3“. Muối này sử dụng định dạng mà hàm crypt() mong đợi

Kết quả được xuất ra bằng cách sử dụng từ khóa echo và sẽ được xác định bằng nhãn “$6$rounds=6000$PiMyLifeUpExampl$ $6$PiMyLifeUpExampl$4”

$extended_des = crypt($string, "_Pi..SALT"); echo "Extended DES: " . $extended_des . PHP_EOL;

4. Bây giờ chúng tôi sẽ chỉ cho bạn cách bạn có thể sử dụng hàm crypt() trong PHP để tạo hàm băm MD5 của một chuỗi

Trước tiên, chúng tôi chuyển biến “pi7” của mình cho hàm crypt. Tiếp theo, chúng tôi chuyển qua trong muối. Chúng tôi bắt đầu muối này với “$1$PIMYLIFE$5” để yêu cầu PHP tạo hàm băm MD5. Sau mã định danh băm, sau đó chúng tôi chỉ định muối tám ký tự

Giống như ví dụ trước, chúng tôi in ra hàm băm MD5 đã tạo bằng cách sử dụng tiếng vang

pi0

5. Tạo một mật mã blowfish dễ dàng như các hàm băm khác. Bạn chỉ cần chuyển vào muối được định dạng chính xác

Để giới thiệu điều này, chúng tôi sử dụng muối “______75_______7“. Bằng cách bắt đầu muối này với “$1$PIMYLIFE$7“, PHP có thể biết rằng chúng tôi muốn tạo hàm băm blowfish. Sau đó, chúng tôi xác định rằng chúng tôi muốn chạy các lần lặp lại “_______75_______9” của hàm băm

Cuối cùng, để hoàn thành muối của chúng tôi, chúng tôi bao gồm một muối 22 ký tự

pi1

6. Tiếp theo, chúng tôi sẽ giới thiệu cách bạn có thể sử dụng hàm crypt() trong PHP để tạo hàm băm SHA-256 của một chuỗi đã chỉ định

PHP xác định một loại muối cho SHA-256 bằng sự hiện diện của “$2y$06$PiMyLifeUpExampleSalt17” khi bắt đầu muối. Sau đó, bạn có thể tùy chọn chỉ định số vòng băm sẽ chạy trước khi hoàn thành. Càng nhiều vòng, hàm băm càng mất nhiều thời gian để hoàn thành

Sau đó, chúng tôi xuất kết quả băm ra màn hình bằng cách sử dụng từ khóa “$string = "PiMyLifeUp";1”

pi2

7. Ví dụ cuối cùng của chúng tôi cho bạn thấy loại băm cuối cùng mà hàm crypt() của PHP hỗ trợ. Loại băm đó là SHA-512

Để yêu cầu hàm crypt() tạo hàm băm SHA-512, bạn cần bắt đầu muối với “$5$rounds=6000$PiMyLifeUpExampl$ $5$PiMyLifeUpExampl$4“. Theo tùy chọn, bạn có thể đặt số vòng để tạo hàm băm. Cuối cùng, bạn kết thúc chuỗi bằng muối 16 ký tự

pi3

8. Phiên bản cuối cùng của mã của bạn sẽ trông giống như những gì chúng tôi đã hiển thị bên dưới

pi4

9. Sau khi chạy đoạn mã trên, bạn sẽ nhận được kết quả như sau

Với kết quả này, bạn có thể thấy các giá trị băm khác nhau được tạo cho chuỗi “$string = "PiMyLifeUp";3” của chúng tôi

pi5

Phần kết luận

Hy vọng rằng, tại thời điểm này, bạn đã hiểu rõ về cách bạn có thể sử dụng hàm crypt() trong PHP

Hàm này cho phép bạn tạo các giá trị băm của bất kỳ chuỗi nào bạn nhập vào. Mặc dù không phải là chức năng đơn giản nhất để sử dụng, nhưng nó rất mạnh mẽ. Ngoài ra, nó có hỗ trợ cho các thuật toán băm hữu ích khác nhau

Vui lòng bình luận bên dưới nếu bạn gặp sự cố khi sử dụng hàm crypt()

Chúng tôi cũng có rất nhiều hướng dẫn PHP khác nếu bạn muốn khám phá thêm về ngôn ngữ này. Nếu bạn muốn học một ngôn ngữ lập trình mới, hãy xem nhiều hướng dẫn viết mã khác của chúng tôi

PHP có hỗ trợ sha256 không?

Hàm crypt() trong PHP cho phép bạn tạo hàm băm của chuỗi đã chỉ định bằng nhiều thuật toán băm khác nhau. Một số giá trị băm được hỗ trợ của hàm này bao gồm blowfish, SHA-256 và MD5 .

Làm cách nào để sử dụng hàm băm trong PHP?

Trước tiên, bạn băm mật khẩu bằng cách thực hiện việc này. $hashed_password = password_hash($password, PASSWORD_DEFAULT); . var_dump($hashed_password); .
thuật toán được sử dụng
thông số
băm mật khẩu thực tế

Làm cách nào để tạo giá trị băm trong PHP?

Hàm hash() trả về giá trị băm cho dữ liệu đã cho dựa trên thuật toán như (md5, sha256). Giá trị trả về là một chuỗi có hexit (giá trị thập lục phân).

Tôi có thể sử dụng sha256 cho mật khẩu không?

TL;DR; . SCRYPT và BCRYPT đều là hàm băm chậm và tốt cho mật khẩu. Luôn sử dụng hàm băm chậm, không bao giờ băm nhanh

Chủ đề