ฉันจะใช้/dev/(u)random
บน Ubuntu หรือระบบ * nix ใด ๆ ได้อย่างไร?
ฉันลองมัน แต่มันบอกว่าปฏิเสธการอนุญาต
หมายเหตุ: ฉันพยายามเป็นรูทด้วย
/dev/(u)random
sudo /dev/(u)random
sudo -s; /dev/(u)random
ฉันจะใช้/dev/(u)random
บน Ubuntu หรือระบบ * nix ใด ๆ ได้อย่างไร?
ฉันลองมัน แต่มันบอกว่าปฏิเสธการอนุญาต
หมายเหตุ: ฉันพยายามเป็นรูทด้วย
/dev/(u)random
sudo /dev/(u)random
sudo -s; /dev/(u)random
คำตอบ:
มันเป็นไฟล์อย่างอุปกรณ์ดังนั้นคุณสามารถทำสิ่งต่าง ๆ เช่น cat หรือคัดลอกจากมัน ตัวอย่างเช่น
dd if=/dev/urandom of=~/urandom_test count=4 bs=1024
สร้างไฟล์ที่มี 4K สุ่มไบต์
cat /dev/urandom > ~/urandom_test2
จะยังคงเขียนไบต์แบบสุ่มไปยังไฟล์นั้นจนกว่าคุณจะกด Ctrl-C อย่าทำสิ่งนี้ในระบบที่มีประสิทธิภาพต่ำ ...
head -30 /dev/urandom > ~/urandom_test3
จะเขียนแบบสุ่ม 30 บรรทัด
bytes terminated by a \n
นิยามของฉันคือ ของคุณคืออะไร head -30 /dev/urandom
จะให้ 30 บรรทัดสุ่มไบต์ ความยาวของเส้นเหล่านั้นจะถูกสุ่มอย่างแน่นอน ลองใช้wc -l
ไฟล์เอาต์พุตของคุณหากคุณไม่มั่นใจ
/dev/urandom
ถูก จำกัด ไว้ที่ 32 เอ็มไอต่อread()
และdd
จะไม่ลองใหม่อีกครั้งในการอ่านอีกครั้ง/dev/urandom
อัตราผลตอบแทนผู้ที่ 32 เอ็มไอเพื่อให้คุณมีการโทรด้วยdd
iflag=fullblock
See dd กำลังสร้างไฟล์สุ่ม 32 MB แทนที่จะเป็น 1 GB
หากคุณต้องการจำนวนสุ่มจำนวนหนึ่งอ่านจำนวนไบต์/dev/urandom
นั้น
มันเป็น "ไฟล์พิเศษ" ที่ถูกทำให้เป็นเหมือนไฟล์เพื่ออ่านตัวเลขสุ่มจาก
การใช้cat
เพื่ออ่านจาก/dev/urandom
เป็นความคิดที่ไม่ดีเพราะมันจะพยายามอ่าน/dev/urandom
จนจบ - แต่มันก็ไม่จบ
head
คุณสามารถใช้ แต่ระวังที่จะอ่านเป็นไบต์ไม่ใช่ทีละบรรทัด - เพราะว่าบรรทัดจะถูกแยกแบบสุ่มโดยการขึ้นบรรทัดใหม่แบบสุ่ม
ดังนั้นหากต้องการอ่าน 30 ไบต์แบบสุ่มลงในไฟล์random.bytes
ให้ใช้:
head -c 30 /dev/urandom > random.bytes
คุณสามารถอ่านได้จากมันในฐานะผู้ใช้ปกติ
ปกติคุณต้องการที่จะใช้ไม่ได้ /dev/urandom
/dev/random
ปัญหาคือ/dev/random
ยากที่จะใช้ในทางที่ถูกต้อง - และใช้งานง่ายในทางที่ผิด การใช้มันผิดใช้งานได้ในตอนแรก แต่สร้างปัญหาประสิทธิภาพที่แปลก - แม้กระทั่งสุ่มในภายหลัง บางครั้ง
เมื่อคุณใช้/dev/urandom
มันจะใช้/dev/random
ภายในเป็นการดูแลส่วนที่ยุ่งยาก
หากคุณต้องการเพียงแค่อ่านด้วยตัวเลขที่รู้จักคุณสามารถทำได้
od -d /dev/random
ฉันใช้สิ่งนี้เป็นการส่วนตัวในการสร้างโทเค็น:
dd if=/dev/urandom count=1 bs=128 | sha512sum
RANDOM
เพื่อสร้างตัวเลขจำนวนเต็มบวกแบบสุ่ม:echo $RANDOM
และโปรแกรมshuf
เพื่อสร้างการเรียงสับเปลี่ยนแบบสุ่มตัวอย่างเช่นเล่นตามลำดับแบบสุ่มจากเพลย์ลิสต์