Hướng dẫn hkdf php - hkdf php

// Generate a random key, and salt to strengthen it during derivation.
$inputKey random_bytes(32);
$salt random_bytes(16);// Derive a pair of separate keys, using the same input created above.
$encryptionKey hash_hkdf('sha256'$inputKey32'aes-256-encryption'$salt);
$authenticationKey hash_hkdf('sha256'$inputKey32'sha-256-authentication'$salt);var_dump($encryptionKey !== $authenticationKey); // bool(true)
?>

Nội dung chính

  • Definition and Usage
  • Return Values
  • PHP Version
  • 1. Mảng là gì? Mảng trong PHP là gì?
  • 2. Mảng chỉ số (Numeric Array) trong PHP
  • 3. Mảng kết hợp (Associative Array) trong PHP
  • 4. Mảng đa chiều trong PHP
  • 5. Sử dụng toán tử thao tác với mảng trong PHP
  • Toán tử "+" để cộng 2 mảng trong PHP
  • So sánh 2 mảng có bằng nhau không bằng toán tử "==" trong PHP
  • Sử dụng toán tử "===" để so sáng 2 mảng trong PHP
  • Sử dụng toán tử "!=" và "" để so sánh mảng trong PHP
  • So sánh 2 mảng không giống nhau bằng toán tử "!==" trong PHP
  • 6. Tìm hiểu về Array Functions trong PHP
  • Hàm count: Đếm số lượng phần tử trong mảng PHP
  • Sử dụng Hàm is_array để kiểm tra liệu đây có phải một mảng trong PHP
  • Cách sử dụng Hàm sort trong PHP
  • Sử dụng Hàm ksort để sắp xếp mảng trong PHP
  • Sử dụng Hàm asort để sắp xếp mảng trong PHP
  • 7. Tại sao nên sử dụng mảng để chứa dữ liệu?
  • 8. Tổng kết bài học Mảng (Array) trong PHP

The above example produces a pair of separate keys, suitable for creation of an encrypt-then-HMAC construct, using AES-256 and SHA-256 for encryption and authentication respectively.



Definition and Usage

The hash_hkdf() function returns HKDF key derivation for the given input key. hash_hkdf() function returns HKDF key derivation for the given input key.

The HKDF is a simple key that is derived using HMAC algorithm like md5, sha256, a input key and a salt key.

Syntax

hash_hkdf ( string $algo , string $ikm [, int $length = 0 [, string $info = '' [, string $salt = '' ]]] ) : string

Parameters

Sr.NoParameter & Description
1

algo

Name of the hashing algorithm. There is a big list of algorithm available with hash, some important ones are md5, sha256, etc.

To get the full list of algorithms supported check for hash_hmac_algos()

2

ikm

Input key.

3

length

The length you want in bytes. The length cannot be greater than 255 times the chosen hash function size.

If the length is 0, then the length will be as per the chosen hash function size.

4

info

Application/context-specific info string.

5

salt

The salt secret key is required for derivation. It is optional, but using salt will add strength to HDKF derivation.

Return Values

The hash_hkdf() function returns a string of raw binary data and false if it fails.hash_hkdf() function returns a string of raw binary data and false if it fails.

PHP Version

This function will work from PHP Version greater than 7.1.2.

Example 1

Using hash_hkdf() −

Output

This will produce the following result −

����E���X�eBU�\"�ڨ��ՈWu��

Example 2

Using hash_hkdf() with length 0 −

Output

This will produce the following result −

8�hrx����5�����

Example 2

1. Mảng là gì? Mảng trong PHP là gì?

Using hash_hkdf() with length 0 − là một biến sử dụng để lưu trữ các giá trị, dữ liệu liên quan. 

php_function_reference.htm

Mảng (Array) trong PHP là một biến sử dụng để lưu trữ các giá trị, dữ liệu liên quan. 

Bạn cứ tưởng tưởng một mảng như một hộp sôcôla với các khe bên trong.

Hướng dẫn hkdf php - hkdf php

Hộp đại diện cho chính mảng trong khi sôcôla đại diện cho các giá trị được lưu trữ trong mảng.

2. Mảng chỉ số (Numeric Array) trong PHP

Hình dưới đây minh hoạ một mảng:sử dụng chỉ số (index) làm khóa truy cập (Access key)

Minh họa về một mảng dữ liệu là tham chiếu đến khe cắm bộ nhớ trong biến mảng.

Mảng chỉ số (Numeric Array) sử dụng chỉ số (index) làm khóa truy cập (Access key). 

Access Key là tham chiếu đến khe cắm bộ nhớ trong biến mảng.

Access Key được sử dụng bất cứ khi nào chúng ta muốn đọc hoặc gán giá trị mới cho một phần tử mảng.

Dưới đây là cú pháp để tạo mảng chỉ số trong PHP: = array(giaTri1, giaTri2, ...);
 

// Cú pháp tạo mảng chỉ số

$ten_mang = array(giaTri1, giaTri2, ...);   = array(123456);
 

Ví dụ: Tạo một mảng số nguyên

$mang_so_nguyen = array(1, 2, 3, 4, 5, 6);  

Hoặc bạn có thể sử dụng cách này:

// Gán giá trị cho vị trí (index)[index] = giaTri;
 

// PHP Engine sẽ tự động tạo một mảng

$ten_mang[index] = giaTri;  

Ví dụ:

Hoặc chúng ta có cách tạo: = array(n => giaTri, ...);
 

// Tạo mảng với key là số nguyên

  • $ten_mang = array(n => giaTri, ...);  : là tên của biến mảng
  • Giải thích các thành phần trong mảng: là số chỉ mục (index) truy cập của phần tử (số nguyên)
  • $ten_mang: là tên của biến mảng là giá trị được gán cho phần tử mảng (ở vị trí index).

n: là số chỉ mục (index) truy cập của phần tử (số nguyên)

  • giaTri: là giá trị được gán cho phần tử mảng (ở vị trí index).
  • Bây giờ hãy xem một ví dụ về một mảng số:

Giả sử chúng ta có 5 bộ phim mà chúng ta muốn lưu trữ trong các biến mảng.

$phim[0] = 'One Piece';[0] = 'One Piece';

Chúng ta có thể sử dụng ví dụ hiển thị như bên dưới để làm điều đó.[1] = 'Dragon Ball';

$phim[2] = 'Doremon';[2] = 'Doremon';

// Gán giá trị cho từng vị trí trong mảng[3] = 'One-Punch Man';

$phim[1] = 'Dragon Ball'; [4] = 'Naruto';
 

$phim[3] = 'One-Punch Man'; 0, 1, 2, 3, 4 đó chính là vị trí (index) lưu trữ của các giá trị.

$phim[4] = 'Naruto';  

Hãy xem đoạn code sau:

$phim[1]="Dragon Ball";[1]="Dragon Ball";

$phim[2]="Doremon";[2]="Doremon";

$phim[3]="One-Punch Man"; [3]="One-Punch Man";

$phim[4]="Naruto";[4]="Naruto";

echo $phim[3]; $phim[3];

$phim[3] = "Fairy Tail";[3] = "Fairy Tail";

echo "";  "";

echo $phim[3];   $phim[3];
 

Kết quả của ví dụ trên ta nhận được như sau:

Như bạn có thể thấy từ các ví dụ trên:

Thay vì mỗi một bộ phim chúng ta khai báo 1 biến gây tốn bộ nhớ. Chúng ta chỉ việc sử dụng mảng.mảng.

Lúc này, làm việc với các giá trị có cùng bản chất lúc này trở nên dễ dàng và linh hoạt hơn nhiều.

Ngoài ra, các biến mảng trên cũng có thể được tạo bằng đoạn code sau.

$phims = array(0 => "One Piece", = array(0 => "One Piece",

1 => "Dragon Ball", => "Dragon Ball",

2 => "Doremon",  => "Doremon",

3 => "One-Punch Man", => "One-Punch Man",

4 => "Naruto" ); => "Naruto" );

echo $phims[4];   $phims[4];
 

Kết quả ta nhận được như sau:


3. Mảng kết hợp (Associative Array) trong PHP

Mảng kết hợp khác với mảng chỉ số theo nghĩa là mảng kết hợp sử dụng Tên mô tả (key) cho các Access Key. khác với mảng chỉ số theo nghĩa là mảng kết hợp sử dụng Tên mô tả (key) cho các Access Key.

Dưới đây là cú pháp để tạo mảng kết hợp trong php:

// Cú pháp này PHP engine tự động tạo 1 mảng $ten_mang

// rồi gán cho nó một cặp key => value

$ten_mang["key"] = value;["key"] = value;

// Cách 2

$ten_mang = array('key' => value);   = array('key' => value);
 

Giải thích các phần tử trong cú pháp trên:

  • $ten_mang là tên của biến mảng
  • 0là tên của định danh của phần tử sẽ được sử dụng để truy cập phần tử sau này (access key hoặc là key)
  • 1 là giá trị được gán cho phần tử mảng.

Chúng ta hãy giả sử rằng chúng ta có một nhóm người và chúng ta muốn phân định giới tính của mỗi người theo tên của họ.

Chúng ta có thể sử dụng một mảng kết hợp.

Đoạn code dưới đây giúp chúng ta làm điều đó:

$sinhVien = array("Hải" => "Nam", "Doanh" => "Nam", "Nhung" => "Nữ");  = array("Hải" => "Nam""Doanh" => "Nam""Nhung" => "Nữ");

print_r($sinhVien);  ($sinhVien);
 

Bạn có thể thấy, thay vì đánh chỉ số từ

2, 
3, 
4, 
5 thì chúng ta sử dụng 
6 là:

  • Hải
  • Doanh
  • Nhung

Kết quả chúng ta nhận được ở ví dụ trên là:

Và khi thực hiện câu lệnh:

7 thì chúng ta nhận được kết quả:

$sinhVien = array("Hải" => "Nam", "Doanh" => "Nam", "Nhung" => "Nữ");  = array("Hải" => "Nam""Doanh" => "Nam""Nhung" => "Nữ");

print_r($sinhVien);   "Hải là " . $sinhVien["Hải"];

Bạn có thể thấy, thay vì đánh chỉ số từ

2, 
3, 
4, 
5 thì chúng ta sử dụng 
6 là:
 

Hải

Doanh

Nhung

Kết quả chúng ta nhận được ở ví dụ trên là: là các mảng có chứa các mảng lồng nhau khác. 

Và khi thực hiện câu lệnh:

7 thì chúng ta nhận được kết quả:

echo "Hải là " . $sinhVien["Hải"];

// Kết quả: Hải là Nam  

Mảng kết hợp này rất hữu ích khi bạn lấy dữ liệu từ cơ sở dữ liệu.

$phims =array( =array(

Bởi vì tên trường thường không đánh theo chỉ số 1, 2, 3, 4 mà được đánh theo ID (Ví dụ: SV001, SV003, SP001....) => array("Jonh Wick""Người vận chuyển""Nhiệm vụ bất khả thi"),

4. Mảng đa chiều trong PHP => array("Endgame""Infinity War"),

Mảng đa chiều là các mảng có chứa các mảng lồng nhau khác.  => array("La La land"),

Ưu điểm của mảng đa chiều là chúng cho phép chúng ta nhóm các dữ liệu liên quan lại với nhau trong khi vẫn chia tách được rõ ràng các nhóm nhỏ hơn. => array("Tên trộm và cô chủ nhà")

Hãy xem xét một ví dụ thực tế triển khai mảng đa chiều trong php.

Bảng dưới đây cho thấy một danh sách các bộ phim theo thể loại phim:

// Khai báo mảng đa chiều($phims);
 

"Hành động" => array("Jonh Wick", "Người vận chuyển", "Nhiệm vụ bất khả thi"),

  • "Viễn tưởng" => array("Endgame", "Infinity War"),
  • "Lãng mạn" => array("La La land"),
  • "Kịch tính" => array("Tên trộm và cô chủ nhà")
  • );

// In ra cấu trúc mảng

print_r($phims);  

Bạn có thể thấy các thể loại phim:

Hành động => array(0 => "Jonh Wick"1 => "Người vận chuyển"2 => "Nhiệm vụ bất khả thi"),

Viễn tưởng => array(0 => "Endgame"1 => "Infinity War"),

Lãng mạn => array (0 => "La La Land"),

Kịch tính => array(0 => "Tên trộm và cô chủ nhà")

Hãy xem xét một ví dụ thực tế triển khai mảng đa chiều trong php.

Bảng dưới đây cho thấy một danh sách các bộ phim theo thể loại phim:

// Khai báo mảng đa chiều $phims["Hành động"][0];
 

"Hành động" => array("Jonh Wick", "Người vận chuyển", "Nhiệm vụ bất khả thi"),

"Viễn tưởng" => array("Endgame", "Infinity War"),

Toán tử "+" để cộng 2 mảng trong PHP

Ta sử dụng toán tử "

8" để kết hợp các phần tử từ cả hai mảng:

Ví dụ kết hợp phần tử của 2 mảng như sau:

$y = array('value' => 10);  = array('value' => 10);

$z = $x + $y;   = $x + $y;
 

Sau khi cộng hai mảng ta nhận được một mảng mới như sau:cộng hai mảng ta nhận được một mảng mới như sau:

So sánh 2 mảng có bằng nhau không bằng toán tử "==" trong PHP

Toán tử

9 so sánh hai mảng nếu chúng bằng nhau và trả về 
����E���X�eBU�\"�ڨ��ՈWu��
0 hoặc
����E���X�eBU�\"�ڨ��ՈWu��
1 nếu đúng:

$y = array("id" => "1");  = array("id" => "1");

if($x == $y) {($x == $y) {

echo "true"; "true";

} else { else {

echo "false"; "false";

}

// Kết quả true hoặc 1  
 


Sử dụng toán tử "===" để so sáng 2 mảng trong PHP

Toán tử "

����E���X�eBU�\"�ڨ��ՈWu��
2" sẽ so sánh cả giá trị và kiểu dữ liệu trong 2 mảng được đem ra so sánh:giá trịkiểu dữ liệu trong 2 mảng được đem ra so sánh:

$y = array("id" => "1"); = array("id" => "1");

if($x === $y) {($x === $y) {

echo "true"; "true";

} else {else {

echo "false"; "false";

}

// Kết quả true hoặc 1  
 


Sử dụng toán tử "===" để so sáng 2 mảng trong PHP

Toán tử "

����E���X�eBU�\"�ڨ��ՈWu��
2" sẽ so sánh cả giá trị và kiểu dữ liệu trong 2 mảng được đem ra so sánh:

$y = array("id" => "1"); = array("id" => "1");

if($x != $y) {($x != $y) {

echo "true"; "true";

} else { else {

echo "false"; "false";

}

// Kết quả true hoặc 1  
 


Sử dụng toán tử "===" để so sáng 2 mảng trong PHP

Toán tử "

����E���X�eBU�\"�ڨ��ՈWu��
2" sẽ so sánh cả giá trị và kiểu dữ liệu trong 2 mảng được đem ra so sánh:

} else {

$y = array('value' => 10);  = array('value' => 10);

$x = array("id" => 1); = array("id" => 1);

$y = array("id" => "1");  = array("id" => "1");

if($x !== $y) {($x !== $y) {

echo "true"; "true";

} else {else {

echo "false"; "false";

// Kết quả False hoặc 0  
// Kết quả true hoặc 1
 


Sử dụng toán tử "!=" và "" để so sánh mảng trong PHP

Ở trường hợp này nếu muốn biết 2 mảng có khác nhau hay không thì chúng ta có thể sử dụng toán tử ����E���X�eBU�\"�ڨ��ՈWu�� 3 hoặc ����E���X�eBU�\"�ڨ��ՈWu�� 4.

// Kết quả trả về là False hoặc 0  

����E���X�eBU�\"�ڨ��ՈWu��
5, như ví dụ sau:

So sánh 2 mảng không giống nhau bằng toán tử "!==" trong PHP = array("Jonh Wick""Người vận chuyển""Nhiệm vụ bất khả thi");

Trường hợp này thường xảy ra khi so sánh mảng có 2 mảng giống nhau về giá trị, nhưng khác kiểu dữ liệu.

echo count($phims); count($phims);

Ví dụ:
 


}// Kết quả true hoặc 1  

6. Tìm hiểu về Array Functions trong PHP

Hàm count: Đếm số lượng phần tử trong mảng PHP

Để đếm số phần tử trong một mảng trong PHP ta sử dụng hàm

����E���X�eBU�\"�ڨ��ՈWu��
5, như ví dụ sau:

So sánh 2 mảng không giống nhau bằng toán tử "!==" trong PHP = array("Jonh Wick""Người vận chuyển""Nhiệm vụ bất khả thi");

Trường hợp này thường xảy ra khi so sánh mảng có 2 mảng giống nhau về giá trị, nhưng khác kiểu dữ liệu.

echo is_array($phims); is_array($phims);

Ví dụ:
 


}// Kết quả true hoặc 1  

  • 6. Tìm hiểu về Array Functions trong PHP
  • Hàm count: Đếm số lượng phần tử trong mảng PHP
  • Để đếm số phần tử trong một mảng trong PHP ta sử dụng hàm
    ����E���X�eBU�\"�ڨ��ՈWu��
    
    5, như ví dụ sau:
  • $phims = array("Jonh Wick", "Người vận chuyển", "Nhiệm vụ bất khả thi");
  • // Xuất ra số lượng phần tử trong mảng $phims

// Kết quả sẽ là 3  

Sử dụng Hàm is_array để kiểm tra liệu đây có phải một mảng trong PHP = array("Hải" => "Nam""Doanh" => "Nam""Nhung" => "Nữ");

Muốn biết một biến trong PHP có phải là một mảng hay không. Chúng ta sẽ sử dụng hàm

����E���X�eBU�\"�ڨ��ՈWu��
6.

sort($sinhVien);($sinhVien);

Hãy xem ví dụ sau để biết cách thực hiện:

// Khai báo 1 mảng $phims để sử dụng($sinhVien);
 

// Xuất thông báo xem biến $phims có phải 1 mảng hay khôngsử dụng hàm sort để sắp xếp mảng

����E���X�eBU�\"�ڨ��ՈWu��
7 sẽ là:

// Kết quả sẽ là 1 (true)  

Cách sử dụng Hàm sort trong PHP

Hàm này được sử dụng để sắp xếp các mảng theo các giá trị chứa trong mảng.

Nếu các giá trị là chữ và số, nó sắp xếp chúng theo thứ tự bảng chữ cái.

Nếu các giá trị là số, nó sắp xếp chúng theo thứ tự tăng dần.

����E���X�eBU�\"�ڨ��ՈWu��
9 được sử dụng để sắp xếp mảng sử dụng
0.

Nó loại bỏ các khóa truy cập hiện có và thêm các phím số mới.

// Kết quả sẽ là 3  

Sử dụng Hàm is_array để kiểm tra liệu đây có phải một mảng trong PHP = array("Hải" => "Nam""Doanh" => "Nam""Nhung" => "Nữ");

Muốn biết một biến trong PHP có phải là một mảng hay không. Chúng ta sẽ sử dụng hàm

����E���X�eBU�\"�ڨ��ՈWu��
6.

ksort($sinhVien);($sinhVien);

Hãy xem ví dụ sau để biết cách thực hiện:

// Khai báo 1 mảng $phims để sử dụng($sinhVien);
 

// Xuất thông báo xem biến $phims có phải 1 mảng hay không

// Kết quả sẽ là 1 (true)  

Sử dụng Hàm asort để sắp xếp mảng trong PHP

Hàm asort() được sử dụng để sắp xếp mảng bằng các giá trị. được sử dụng để sắp xếp mảng bằng các giá trị.

Ví dụ sau minh họa cách sử dụng của hàm

5.

// Khai báo mảng $sinhVien

$sinhVien = array("Hải" => "Nam", "Doanh" => "Nam", "Nhung" => "Nữ");  = array("Hải" => "Nam""Doanh" => "Nam""Nhung" => "Nữ");

// Sử dụng asort để sắp xếp mảng theo value

asort($sinhVien);($sinhVien);

// In ra mảng

print_r($sinhVien);  ($sinhVien);
 

Kết quả nhận được sau khi sử dụng hàm 

5 để sắp xếp mảng 
����E���X�eBU�\"�ڨ��ՈWu��
7:sắp xếp mảng
����E���X�eBU�\"�ڨ��ՈWu��
7:

Cách sử dụng các hàm có sẵn để sắp xếp mảng trong PHP cũng rất đơn giản và dễ hiểu phải không nào?

7. Tại sao nên sử dụng mảng để chứa dữ liệu?

Trong trường hợp cần thiết, chúng ta nên sử dụng mảng để chứa dữ liệu vì 3 lý do sau đây:nên sử dụng mảng để chứa dữ liệu vì 3 lý do sau đây:

  • Nội dung của Mảng có thể được kéo dài mà vẫn tiết kiệm bộ nhớ
  • Mảng giúp dễ dàng lưu trữ và thao tác với các thông tin có liên quan đến nhau
  • Sử dụng mảng giúp viết code sạch hơn.

8. Tổng kết bài học Mảng (Array) trong PHP

Như vậy là qua bài cách sử dụng mảng trong PHP này bạn đã được học và hiểu về:cách sử dụng mảng trong PHP này bạn đã được học và hiểu về:

  • Mảng trong PHP là các biến đặc biệt với khả năng lưu trữ nhiều giá trị.là các biến đặc biệt với khả năng lưu trữ nhiều giá trị.
  • Mảng linh hoạt và có thể dễ dàng kéo dài để chứa nhiều giá trị hơn
  • Hàm count được sử dụng để đếm số lượng giá trị đã lưu trong mảng. được sử dụng để đếm số lượng giá trị đã lưu trong mảng.
  • Hàm is_array được sử dụng để xác định xem một biến có phải là một mảng hợp lệ hay không. được sử dụng để xác định xem một biến có phải là một mảng hợp lệ hay không.
  • Các hàm mảng khác bao gồm sort, ksort, Assort, v.v.

Đó là kiến thức cơ bản về mảng trong PHP để bạn có thể sử dụng để thực hiện các công việc có liên quan đến mảng.


> Bạn cũng sẽ được học cách ứng dụng mảng trong lập trình web thực tế ở KHÓA HỌC LẬP TRÌNH WEB VỚI PHP. Đăng ký ngay để nhận hỗ trợ học phí từ doanh nghiệp!KHÓA HỌC LẬP TRÌNH WEB VỚI PHP. Đăng ký ngay để nhận hỗ trợ học phí từ doanh nghiệp!

---

HỌC VIỆN ĐÀO TẠO CNTT NIIT - ICT HÀ NỘI

Học Lập trình chất lượng cao (Since 2002). Học thực tế + Tuyển dụng ngay!

Đc: Tầng 3, 25T2, N05, Nguyễn Thị Thập, Cầu Giấy, Hà Nội

SĐT: 02435574074 - 0968051561

Email:

Fanpage: https://facebook.com/NIIT.ICT/

#niit #niithanoi #niiticthanoi #hoclaptrinh #khoahoclaptrinh #hoclaptrinhjava #hoclaptrinhphp #java #php #python