PHP 7 - CSPRNG

Trong PHP 7, hai hàm mới sau đây được giới thiệu để tạo chuỗi và số nguyên an toàn bằng mật mã theo cách đa nền tảng.

  • random_bytes() - Tạo các byte giả ngẫu nhiên an toàn bằng mật mã.

  • random_int() - Tạo số nguyên giả ngẫu nhiên an toàn bằng mật mã.

random_bytes ()

random_bytes () tạo ra một chuỗi byte ngẫu nhiên mật mã có độ dài tùy ý thích hợp cho việc sử dụng mật mã, chẳng hạn như khi tạo muối, khóa hoặc vectơ khởi tạo.

Cú pháp

string random_bytes ( int $length )

Thông số

  • length - Độ dài của chuỗi ngẫu nhiên cần được trả về theo byte.

Giá trị trả lại

  • Trả về một chuỗi chứa số byte ngẫu nhiên được bảo mật bằng mật mã được yêu cầu.

Lỗi / Ngoại lệ

  • Nếu không thể tìm thấy một nguồn ngẫu nhiên thích hợp, một Ngoại lệ sẽ được ném ra.

  • Nếu các tham số không hợp lệ được cung cấp, a TypeError sẽ được ném.

  • Nếu cung cấp độ dài byte không hợp lệ, một Lỗi sẽ được đưa ra.

Thí dụ

<?php
   $bytes = random_bytes(5);
   print(bin2hex($bytes));
?>

Nó tạo ra đầu ra trình duyệt sau:

54cc305593

random_int ()

random_int() tạo ra các số nguyên ngẫu nhiên mật mã phù hợp để sử dụng khi các kết quả không thiên vị là rất quan trọng.

Cú pháp

int random_int ( int $min , int $max )

Thông số

  • min - Giá trị thấp nhất được trả về, phải là PHP_INT_MIN hoặc cao hơn.

  • max - Giá trị cao nhất được trả về, phải nhỏ hơn hoặc bằng PHP_INT_MAX.

Giá trị trả lại

  • Trả về một số nguyên ngẫu nhiên an toàn bằng mật mã trong phạm vi từ tối thiểu đến tối đa, bao gồm.

Lỗi / Ngoại lệ

  • Nếu không tìm được nguồn ngẫu nhiên thích hợp, Exception sẽ được ném.

  • Nếu các tham số không hợp lệ được cung cấp, a TypeError sẽ được ném.

  • Nếu tối đa nhỏ hơn tối thiểu, Error sẽ được ném.

Thí dụ

<?php
   print(random_int(100, 999));
   print("");
   print(random_int(-1000, 0));
?>

Nó tạo ra đầu ra trình duyệt sau:

614
-882