Cách sử dụng ngẫu nhiên / dev / (u)


32

Làm cách nào tôi có thể sử dụng /dev/(u)randomtrê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

2
Xin lưu ý rằng các lệnh này chỉ nên được sử dụng, khi bạn thực sự cần dữ liệu ngẫu nhiên chất lượng cao, thường là để tạo mật khẩu tốt. Mặt khác, có nhiều lựa chọn thay thế trọng lượng nhẹ hơn, ví dụ môi trường shell 'biến' RANDOMđể tạo số nguyên dương ngẫu nhiên: echo $RANDOMvà chương trình shuftạ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.
sudodus

Câu trả lời:


54

Đâ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


1
Hãy upvote sau đó!
aychedee

5
Tôi sẽ làm nếu đại diện của tôi> 15
Caner Korkmaz

1
Lưu ý: Đừng làm cat / dev / urandom> ~ / urandom_test2 trên các hệ thống hiệu suất thấp -> đóng băng hệ thống
Caner Korkmaz

1
Chà .. điều đó thực sự phụ thuộc vào định nghĩa của bạn về một dòng. Định nghĩa của tôi là bytes terminated by a \n. Của bạn là gì head -30 /dev/urandomsẽ 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 -ltrên tệp đầu ra của bạn nếu bạn không bị thuyết phục.
aychedee

3
Lưu ý rằng /dev/urandomđược giới hạn ở 32 MiB mỗi lần read()ddsẽ không thử đọc lại một lần nữa /dev/urandommang lại 32 MiB đó, vì vậy bạn phải gọi ddvới iflag=fullblock. Xem dd đang tạo một tệp ngẫu nhiên 32 MB thay vì 1 GB
Sergiy Kolodyazhnyy

14

Nhận byte ngẫu nhiên

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/urandomlà 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.

Để yên / dev / ngẫu nhiên

Thông thường, bạn muốn sử dụng /dev/urandom, không /dev/random.

Vấn đề là /dev/randomkhó 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/randomnội bộ, chăm sóc các phần khó khăn.


4

Nếu bạn chỉ muốn đọc nó với số được công nhận, bạn có thể làm

od -d /dev/random

0

Cá nhân tôi sử dụng điều này để tạo mã thông báo:

dd if=/dev/urandom  count=1 bs=128 | sha512sum
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.