Làm cách nào tôi có thể sử dụng /dev/(u)random
trên Ubuntu hoặc bất kỳ sistems * nix nào?
Tôi đã thử điều này nhưng nó cho phép bị từ chối.
Lưu ý: Tôi cũng đã thử làm root.
/dev/(u)random
sudo /dev/(u)random
sudo -s; /dev/(u)random
Làm cách nào tôi có thể sử dụng /dev/(u)random
trên Ubuntu hoặc bất kỳ sistems * nix nào?
Tôi đã thử điều này nhưng nó cho phép bị từ chối.
Lưu ý: Tôi cũng đã thử làm root.
/dev/(u)random
sudo /dev/(u)random
sudo -s; /dev/(u)random
Câu trả lời:
Đây là một tệp giống như thiết bị, vì vậy bạn có thể làm những việc như mèo hoặc sao chép từ nó. Ví dụ:
dd if=/dev/urandom of=~/urandom_test count=4 bs=1024
Tạo một tệp chứa 4K byte ngẫu nhiên.
cat /dev/urandom > ~/urandom_test2
Sẽ tiếp tục ghi byte ngẫu nhiên vào tệp đó cho đến khi bạn nhấn Ctrl-C. Đừng làm điều này trên một hệ thống hiệu suất thấp ...
head -30 /dev/urandom > ~/urandom_test3
Sẽ viết 30 dòng byte ngẫu nhiên
bytes terminated by a \n
. Của bạn là gì head -30 /dev/urandom
sẽ cung cấp cho bạn 30 dòng byte ngẫu nhiên. Độ dài của những dòng đó chắc chắn sẽ là ngẫu nhiên. Hãy thử chạy wc -l
trên tệp đầu ra của bạn nếu bạn không bị thuyết phục.
/dev/urandom
được giới hạn ở 32 MiB mỗi lần read()
và dd
sẽ không thử đọc lại một lần nữa /dev/urandom
mang lại 32 MiB đó, vì vậy bạn phải gọi dd
với iflag=fullblock
. Xem dd đang tạo một tệp ngẫu nhiên 32 MB thay vì 1 GB
Nếu bạn cần một số byte ngẫu nhiên nhất định, hãy đọc số byte đó từ đó /dev/urandom
.
Đó là một "tệp đặc biệt" được tạo ra giống như một tệp để đọc các số ngẫu nhiên từ đó.
Sử dụng cat
để đọc từ /dev/urandom
là một ý tưởng tồi, bởi vì nó sẽ cố đọc /dev/urandom
đến cuối - nhưng nó không kết thúc.
Bạn có thể sử dụng head
. Nhưng hãy cẩn thận để đọc theo byte, không phải theo dòng - bởi vì các dòng sẽ được phân tách ngẫu nhiên bởi các byte dòng mới ngẫu nhiên.
Vì vậy, để đọc 30 byte ngẫu nhiên vào một tệp random.bytes
, hãy sử dụng:
head -c 30 /dev/urandom > random.bytes
Bạn có thể đọc từ nó như một người dùng bình thường.
Thông thường, bạn muốn sử dụng /dev/urandom
, không /dev/random
.
Vấn đề là /dev/random
khó sử dụng đúng cách - và dễ sử dụng sai cách. Sử dụng nó sai hoạt động lúc đầu, nhưng tạo ra các vấn đề hiệu suất lạ - thậm chí ngẫu nhiên - sau này. Đôi khi.
Khi bạn sử dụng /dev/urandom
, nó sử dụng /dev/random
nội bộ, chăm sóc các phần khó khăn.
RANDOM
để tạo số nguyên dương ngẫu nhiên:echo $RANDOM
và chương trìnhshuf
tạo hoán vị ngẫu nhiên, ví dụ: phát theo thứ tự ngẫu nhiên từ danh sách phát.