หากคุณกำลังมองหา "randomness" จำนวนมากอย่างรวดเร็วคุณอาจพิจารณาว่าไม่ได้ใช้/dev/urandomโดยตรง แต่ควรใช้อุปกรณ์ dm-crypt ธรรมดาพร้อมด้วยปุ่มสุ่ม
มันสมบูรณ์แบบสำหรับการเขียนทับอุปกรณ์ แต่การรวมเข้ากับไฟล์ความยาวคงที่คุณสามารถรับความยาวคงที่ของข้อมูลแบบสุ่มโดยไม่ต้องรอ/dev/urandomเลย
(แม้ว่าปัญหาหลักของคุณดูเหมือนจะรออักขระต่อเนื่องอยู่stringsแต่สิ่งนี้อาจมีประโยชน์ & รวดเร็วกว่าในการแก้ "ปัญหาหัวเรื่องของคุณ")
นี่คือส่วนที่เกี่ยวข้องจากคำถามที่พบบ่อยของ cryptsetup :
2.19 ฉันจะล้างอุปกรณ์ด้วยการสุ่มระดับ crypto ได้อย่างไร?
คำแนะนำทั่วไปหากคุณไม่ต้องการเพียงแค่ใช้ศูนย์การลบคือการใช้สิ่งที่ต้องการ
cat /dev/urandom > <taget-device>
นั่นช้ามากและเจ็บปวดที่ 10-20MB / s บนคอมพิวเตอร์ที่เร็ว การใช้ cryptsetup และอุปกรณ์ dm-crypt ธรรมดาที่มีปุ่มสุ่มมันเร็วกว่ามากและให้ความปลอดภัยในระดับเดียวกัน ค่าเริ่มต้นค่อนข้างเพียงพอ
สำหรับการตั้งค่าอุปกรณ์ให้ทำดังต่อไปนี้:
cryptsetup open --type plain -d /dev/urandom /dev/<block-device> to_be_wiped
นี้แมปคอนเทนเนอร์เป็นธรรมดาภายใต้ / dev / mapper / to_be_wiped ด้วยรหัสผ่านแบบสุ่ม สำหรับการเช็ดจริงคุณมีหลายตัวเลือก การเช็ดอย่างง่ายโดยไม่มีตัวบ่งชี้ความคืบหน้า:
cat /dev/zero > /dev/mapper/to_be_wiped
ความคืบหน้าตัวบ่งชี้โดย dd_rescue:
dd_rescue -w / dev / ศูนย์ / dev / mapper / to_be_wiped
ตัวบ่งชี้ความก้าวหน้าโดยเครื่องวัดกระแส "wcs" ของฉัน (หาได้จาก
http://www.tansi.org/tools/index.html ):
cat /dev/zero | wcs > /dev/mapper/to_be_wiped
หรือใช้ "dd" แบบธรรมดาซึ่งให้ความคืบหน้าแก่คุณเมื่อส่ง SIGUSR1 ดูหน้า dd man
ลบการแมปท้ายแล้วคุณทำเสร็จแล้ว
ดังนั้นการสร้างไฟล์ความยาวคงที่คือ 10M ซึ่งมีชื่อว่า 10
fallocate -l 10M 10
ตั้งค่า dm-crypt ธรรมดาที่ชื่อ 10 /dev/mapper/crypt10
cryptsetup -v open --type plain -d /dev/urandom 10 crypt10
ตอนนี้ "เขียนทับ" 10 ด้วยการสุ่มระดับ crypto (พร้อมdd) & ปิดการทำแผนที่
dd if=/dev/zero of=/dev/mapper/crypt10
cryptsetup -v close crypt10
ตอนนี้คุณมีข้อมูลสุ่ม 10 ไฟล์ในไฟล์ 10 ที่จะเล่นหรือลบอักขระที่ไม่สามารถพิมพ์ได้ทั้งหมดโดยใช้คำตอบของ Kamil: "แปล" ไฟล์ทั้งหมดเป็นไฟล์ที่พิมพ์ได้ซึ่งชื่อ 10-printable จะเป็น
tr -dc '[:print:]' < 10 > 10-printable
เหลือประมาณ 3.8M ของข้อมูลที่พิมพ์ได้ในการพิมพ์ 10 ครั้ง
stringsกรองตัวอักษรที่พิมพ์ได้ แต่มันคาดหวังว่าจะมีคนติดต่อกันหรือไม่?