Hướng dẫn which encryption is used in php? - mã hóa nào được sử dụng trong php?

Hướng dẫn which encryption is used in php? - mã hóa nào được sử dụng trong php?

Giới thiệu về mã hóa PHP

Mã hóa PHP không là gì ngoài việc đạt được mã mã hóa với sự trợ giúp của một số thuật toán đôi khi được gọi là thuật toán băm và chúng thường làm việc bằng cách lấy một chuỗi hoặc một số đầu vào khác và sau đó nó sẽ giúp tạo một dấu vân tay duy nhất từ ​​chuỗi/khác. Mã hóa liên quan đến việc thay đổi văn bản cụ thể/các văn bản khác thành một số văn bản mã khác nhau hoặc khác chỉ để làm cho dữ liệu an toàn mà không tiếp xúc với hầu hết mọi người ngoại trừ một số người có quyền truy cập. Kiểm tra các loại phương pháp mã hóa PHP khác nhau dưới đây.

Các loại mã hóa PHP

Có nhiều loại phương pháp mã hóa khác nhau trong việc sử dụng ngày nay nhưng thông thường là bằng cách băm, và phương pháp thứ hai là mã hóa khóa bí mật và phương pháp thứ ba là phương pháp mã hóa phong bì. Đối với mỗi phương thức mã hóa sẽ có một số thuật toán hoặc mật mã để chọn từ mỗi phương pháp (đối với mỗi thuật toán sẽ có điểm yếu và điểm mạnh của riêng chúng). Ở đây chúng tôi sẽ tập trung vào việc thực hiện băm và mã hóa khóa bí mật.

1. Băm

Thuật toán băm của ngôn ngữ lập trình PHP thường lấy một giá trị đầu vào và sau đó chuyển đổi nó thành một tiêu hóa tin nhắn. Trong một hạt dẻ/nhiều hơn, giá trị văn bản đơn giản sẽ được chuyển thành độ dài cố định của băm và nó chỉ có thể được xác thực chỉ bỏ qua một giá trị ban đầu cho thuật toán băm độc đáo. Điều này sẽ làm cho băm hoàn hảo chỉ để lưu trữ tất cả các mật khẩu người dùng.

Nó chỉ đáng chú ý rằng băm hoàn toàn không phải là giải pháp chống đạn cho truy vấn của chúng tôi nhưng một số sẽ không có tất cả các thuật toán băm bằng nhau. Chúng tôi đã xem xét các thuật toán MD5 và SHA1 hiệu quả và nhanh chóng, và sau đó làm cho tất cả những điều đó trở nên lý tưởng để xác minh tệp và kiểm tra. Tốc độ của chúng làm cho hầu hết chúng không phù hợp để băm mật khẩu của người dùng. Với sức mạnh của tính toán của GPU hiện đại, mật khẩu sẽ bị phá vỡ chỉ với sự trợ giúp của lực lượng vũ phu trong vấn đề đơn giản của vài phút và chỉ bằng cách tiết lộ mật khẩu/mật khẩu bản rõ ban đầu và cố ý thuật toán/thuật toán chậm hơn như bcrypt hoặc argon2 sẽ được sử dụng.

Việc băm mật khẩu được tạo bằng thuật toán thì nó sẽ che khuất dữ liệu thực tế và nguyên bản và sau đó nó sẽ làm chậm kẻ tấn công trong khi các nhà phát triển nên thử một thuật toán mạnh nhất có sẵn. Ngôn ngữ PHP sẽ có cú pháp cơ bản là password_hash ().

Đây là ví dụ về việc sử dụng kỹ thuật băm ‘bcrypt.

Code:

$str1 = 'Password';
$options1 = [
'cost1' => 10,
'salt1' => '$P27r06o9!nasda57b2M22'
];
echo sprintf("The Result of crypt() function on %s is %s\n",
$str1, crypt($str1, $options1['salt1']));
echo "
";
echo sprintf("The Result of DEFAULT function on %s is %s\n",
$str1, password_hash($str1, PASSWORD_DEFAULT));
echo "
";
echo sprintf("The Result of BCRYPT function on %s is %s\n", $str1,
password_hash($str1, PASSWORD_BCRYPT, $options1));
echo "
";
?>

Output:

Hướng dẫn which encryption is used in php? - mã hóa nào được sử dụng trong php?

2. Mã hóa khóa bí mật

Mã hóa khóa bí mật của PHP thường sử dụng một khóa duy nhất để cả dữ liệu mã hóa và giải mã. Nó còn được gọi là mã hóa đối xứng. Đối với điều này, nếu bạn đang chạy một phiên bản cũ của ngôn ngữ lập trình PHP thì hãy cài đặt natri của ngôn ngữ lập trình PHP thông qua PECL.

Lúc đầu, bạn cần khóa mã hóa thực sự được tạo chỉ bằng cách sử dụng mã chức năng Random_Bytes (). & nbsp; nhưng thông thường, bạn chỉ phải làm một lần và lưu trữ nó chỉ là một biến môi trường. Đây là chìa khóa mà chúng ta phải giữ bí mật. Nếu khóa bí mật được biết đến thì mã hóa cũng sẽ bị xâm phạm.

$secret_key = random_bytes (SODIUM_CRYPTO_SECRETBOX_KEYBYTES);

Để mã hóa giá trị sẽ chuyển đến hàm natri_crypto_secretbox () với khóa/khóa bí mật của chúng tôi và $ nonce. Sau đó, biến nonce được tạo bằng hàm Random_Bytes () và nó chỉ là do cùng/tương tự không thể sử dụng được.

$nonce = random_bytes(SODIUM_CRYPTO_NONCEBYTES);
$ciphertext = sodium_crypto_secretbox(‘This is secret key!!!’, $nonce, $secret_key);

Điều này sẽ đại diện cho vấn đề bởi vì chúng ta cần điều đó sẽ giải mã được giá trị sau này/sau đó. Nhưng Nonce/Nonces không có bất kỳ chìa khóa nào để giữ bí mật để chúng ta có thể dễ dàng chuẩn bị cho nó dưới dạng hàm $ CodeText và sau đó hàm base64_encode () là giá trị đang xảy ra trước khi lưu nó vào cơ sở dữ liệu thực tế.

$encoded1 = base64_encode($nonce . $ciphertext);
Var_dump($encoded1);

Cú pháp trên chỉ để mã hóa giá trị. Để giải mã/giải mã giá trị được mã hóa, hãy sử dụng cú pháp dưới đây.

$decoded1 = base64_decode($encoded1);

Độ dài của biến hoặc hàm không phải sẽ được trích xuất bằng hàm mb_substr () ngay trước khi giải mã giá trị.

Đây là ví dụ về việc thực hiện hàm Random_Bytes () để hiểu mã hóa khóa bí mật. Ở đây, độ dài chuỗi ngẫu nhiên sẽ được chuyển đổi với sự trợ giúp của hex nhị phân để đảm bảo các byte ngẫu nhiên trong một chuỗi.

Code:

$length2 = random_bytes('3');
var_dump(bin2hex($length2));
?>

Output:

Hướng dẫn which encryption is used in php? - mã hóa nào được sử dụng trong php?

3. Mã hóa phong bì

Chúng ta đều biết rằng dữ liệu của chúng ta dễ bị tổn thương nếu khóa bí mật của chúng ta được biết/bị xâm phạm. Chỉ cần xem xét rằng một người dùng/kẻ tấn công độc hại đã có quyền truy cập vào điểm máy chủ thực sự lưu trữ ứng dụng của chúng tôi/khác. Trong tình huống này, kẻ tấn công hầu hết thời gian đều nhận/phát hiện ra khóa bí mật cần được giữ bí mật. Nếu nó được phát hiện thì dữ liệu của chúng tôi có thể có nguy cơ tiếp xúc với người dùng/kẻ tấn công độc hại.

Chúng tôi có thể sử dụng dịch vụ Cloud KMS thực sự được cung cấp bởi Dịch vụ Quản lý khóa Google Cloud. Nó cung cấp rất nhiều tính năng hữu ích. Nó bao gồm xoay khóa tự động và khả năng phá hủy khóa bị trì hoãn.

Trước khi gửi PlainText đến đám mây KMS, hãy tạo khóa mã hóa duy nhất mỗi lần khi chúng tôi thực sự viết dữ liệu vào cơ sở dữ liệu. Khóa này được gọi là DEK (khóa mã hóa dữ liệu) thực sự được sử dụng trong việc mã hóa dữ liệu. DEK được gửi đến Google Cloud KMS sẽ được mã hóa và sau đó nó sẽ trả về KEK (khóa mã hóa khóa). Cuối cùng, KEK sẽ được lưu trữ cạnh nhau trong điểm cơ sở dữ liệu thực tế bên cạnh dữ liệu được mã hóa và sau đó DEK sẽ bị phá hủy.

Kiểm tra mã hóa và giải mã dữ liệu như dưới đây:

Quá trình mã hóa:
  • Nó sẽ tạo khóa mã hóa dữ liệu DEK duy nhất
  • Sử dụng SKE (mã hóa khóa bí mật) Dữ liệu sẽ được mã hóa
  • Bây giờ khóa mã hóa DEK - dữ liệu sẽ được gửi đến đám mây KMS cho mục đích mã hóa thực sự trả về khóa mã hóa khóa - khóa.
  • Sau đó, dữ liệu được mã hóa sẽ được lưu trữ và kek cạnh nhau
  • Sau đó sự phá hủy của DEK sẽ được thực hiện
Quá trình giải mã:
  • Bây giờ lúc đầu, từ cơ sở dữ liệu được mã hóa và KEK (khóa được mã hóa khóa) sẽ được truy xuất.
  • Sau đó gửi Kek cho đám mây KMD để giải mã thực sự trả về khóa mã hóa DEK -
  • Bây giờ khóa mã hóa dữ liệu DEK - sẽ được sử dụng để giải mã dữ liệu được mã hóa.
  • Bây giờ DEK - Khóa mã hóa dữ liệu sẽ bị phá hủy.

Sự kết luận

Tôi hy vọng bạn đã học được định nghĩa của mã hóa PHP và cùng với các loại phương thức mã hóa PHP khác nhau cùng với các ví dụ bằng cách đề cập đến mô tả ngắn gọn của chúng. Một ví dụ được hiển thị ở đây để mã hóa phong bì vì nó là mã hóa dựa trên đám mây.

Bài viết đề xuất

Đây là một hướng dẫn để mã hóa PHP. Ở đây chúng tôi thảo luận về phần giới thiệu về mã hóa PHP, 3 loại mã hóa hàng đầu với các ví dụ chi tiết. Bạn cũng có thể xem qua các bài viết liên quan khác của chúng tôi để tìm hiểu thêm -

  1. Chức năng thời gian ngày PHP
  2. Đối tượng dữ liệu PHP
  3. preg_match trong PHP
  4. PHP MD5 ()

PHP có thể được sử dụng để mã hóa dữ liệu không?

Trong PHP, có thể sử dụng một chuỗi mã hóa và giải mã một chuỗi bằng cách sử dụng một trong các tiện ích mở rộng mật mã được gọi là hàm openSSL để mã hóa và giải mã.hàm openSSL_encrypt (): hàm openSSL_encrypt () được sử dụng để mã hóa dữ liệu.Encryption and Decryption of a string is possible using one of the Cryptography Extensions called OpenSSL function for encrypt and decrypt. openssl_encrypt() Function: The openssl_encrypt() function is used to encrypt the data.

Chúng ta có thể giải mã SHA256 trong PHP không?

SHA256 là một hàm băm, không phải là hàm mã hóa.Thứ hai, vì SHA256 không phải là hàm mã hóa, nó không thể được giải mã....it cannot be decrypted. ...

Cách tốt nhất để mã hóa mật khẩu trong PHP là gì?

Tạo khóa mã hóa dữ liệu (DEK) mã hóa dữ liệu bằng mã hóa khóa bí mật.Gửi khóa mã hóa duy nhất (DEK) đến đám mây KMS để mã hóa, trả về KEK.Lưu trữ dữ liệu được mã hóa và khóa được mã hóa (KEK) cạnh nhau.

Làm thế nào sử dụng mã hóa RSA trong PHP?

PubKey)) $ data = base64_encode ($ được mã hóa);khác ném ngoại lệ mới ('Không thể mã hóa dữ liệu.