Hướng dẫn php random hex string

While this answers OP's question, if what you are looking for is random, then @danorton answer may be a better fit.

Like this:

$val = '';
for[ $i=0; $i

Seed một số ngẫu nhiên rất hữu ích trong các tình huống mà bạn muốn tạo một chuỗi ngẫu nhiên nhưng có thể lặp lại. Đoạn mã sau tạo ra cùng một chuỗi các số ngẫu nhiên khi chạy hai lần.

Kết quả của bạn có thể sẽ khác nhau trong cả hai trường hợp. Trong trường hợp đầu tiên, chúng tôi chỉ xáo trộn chuỗi ký tự được phép và sau đó lấy 10 ký tự đầu tiên của chuỗi đó. Trong trường hợp thứ hai, chúng tôi đã thêm "video" vào đầu chuỗi được tạo và ".mp4" ở cuối.

Phương pháp tạo chuỗi ký tự chữ và số ngẫu nhiên này rất dễ dàng, nhưng gặp phải một vài vấn đề. Ví dụ: bạn sẽ không bao giờ có được các ký tự giống nhau trong chuỗi ngẫu nhiên của mình hai lần. Ngoài ra, độ dài của chuỗi kết quả ngẫu nhiên chỉ có thể dài bằng chuỗi nhập vào.

Tạo chuỗi ngẫu nhiên

Nếu các vấn đề tôi liệt kê ở trên là một tác nhân làm hỏng vấn đề, bạn có thể muốn xem xét một số triển khai khác. Các code sau đây sẽ giải quyết cả hai vấn đề này.

Bạn có thể sửa đổi nó để bổ sung các hậu tố và tiền tố cụ thể vào chuỗi ngẫu nhiên vừa được tạo. Những người đang sử dụng PHP 7 có thể cải thiện hơn nữa việc tạo chuỗi bằng cách sử dụng hàm bảo mật mã hóa random_int[] thay vì mt_rand[].

Tạo chuỗi hexadecimal [thập lục phân] ngẫu nhiên

Nếu bạn muốn tạo các chuỗi thập lục phân ngẫu nhiên trong PHP, bạn cũng có thể sử dụng hàm md5[$string, $rawDefput] hoặc hàm sha1[$string, $rawDefput]. Cả hai sẽ tạo ra hash của một chuỗi nhập vào.

Bạn sẽ tiếp tục nhận được các giá trị hash duy nhất miễn là dữ liệu vào là duy nhất. Điều này có thể đạt được bằng cách sử dụng kết quả của hàm như time[] làm dữ liệu nhập vào. Theo mặc định, md5[] sẽ trả về chuỗi hexadecimal 32 ký tự và sha1[] sẽ trả về chuỗi hexadecimal 40 ký tự. Chúng có thể được cắt theo một độ dài cụ thể bằng cách sử dụng hàm substr[].

Dưới đây là một ví dụ kết quả được trả về bởi các hàm này:

Như bạn có thể thấy, việc tạo các chuỗi hexadecimal ngẫu nhiên và duy nhất dài tới 40 ký tự rất dễ dàng trong PHP.

Tạo chuỗi ngẫu nhiên có bảo mật mã hóa

Ba hàm để tạo các chuỗi ký tự chữ và số ngẫu nhiên mà chúng ta đã thảo luận cho đến nay không có bảo mật mã hóa. May mắn thay, PHP cũng có một hàm random_bytes[$length] để tạo các byte giả ngẫu nhiên được bảo mật mã hóa. Tham số $length xác định chuỗi kết quả sẽ dài bao nhiêu.

Khi bạn có kết quả dưới dạng byte ngẫu nhiên, bạn có thể sử dụng hàm bin2hex[] để chuyển đổi chúng thành giá trị hexadecimal. Điều này sẽ làm tăng gấp đôi chiều dài của chuỗi.

Một chức năng khác mà bạn có thể sử dụng để tạo các byte ngẫu nhiên được bảo mật mã hóa là openssl_random_pseudo_bytes[$length, & $crypto_strong]. Giá trị của tham số thứ hai có thể được dùng để xác định xem chuỗi kết quả sẽ được tạo bằng thuật toán bảo mật mã hóa hay không.

Tổng kết

Trong hướng dẫn này, chúng tôi đã xem xét việc tạo ra các số và các chuỗi ký tự chữ ngẫu nhiên trong PHP. Việc tạo ra số ngẫu nhiên có thể hữu ích trong nhiều tình huống, như trong các trò chơi mà bạn phải tạo ra những kẻ thù hoặc ngẫu nhiên cung cấp cho người chơi một số manh mối về các chữ cái để họ có thể tạo thành một từ hoàn chỉnh.

Cũng giống như các số ngẫu nhiên, việc tạo ra các chuỗi chữ và số ngẫu nhiên cũng có thể khá hữu ích trong nhiều trường hợp. Với sự trợ giúp của str_shuffle[], bạn có thể chọn bộ ký tự nào xuất hiện trong chuỗi ngẫu nhiên của mình. Với sha1 [] và md5 [], bạn có thể dễ dàng tạo các chuỗi thập lục phân ngẫu nhiên và với Random_bytes [] bạn có thể tạo các chuỗi bảo mật bằng mật mã. Điều này sẽ cho phép bạn tạo ra các tên file và username ngẫu nhiên nhưng khó đoán.

Tôi hy vọng bạn thích hướng dẫn này. Nếu bạn có bất kỳ câu hỏi, hãy nêu lên trong phần bình luận.

Chủ Đề