Tôi đã tìm thấy thông tin /proc/sys/kernel//random/entropy_avail
chỉ ra số lượng bit có sẵn trong /dev/random
. Tôi muốn kiểm tra xem lần đọc tiếp theo /dev/random
có bị chặn hay không và cách tiếp cận ngây thơ của tôi chỉ là so sánh entropy_avail
và số lượng bit ngẫu nhiên cần thiết nhưng nó không hoạt động tốt. Khi tôi làm một thí nghiệm ngu ngốc đơn giản, tôi nhận ra rằng entropy được đệm. Bộ đệm entropy 64 bit cung cấp 6 byte dữ liệu ngẫu nhiên.
Tôi đã theo dõi entropy_avail thông qua lệnh đơn giản này:
while true
do
cat /proc/sys/kernel//random/entropy_avail
sleep 1
done
Và tôi đã cố gắng để có được một byte ngẫu nhiên thông qua lệnh
dd if=/dev/random bs=1 count=1 > /dev/null
Các dd
lệnh bị chặn nếu entropy là 63 hoặc thấp hơn. Khi entropy đạt 64 và tôi đọc một byte thì entropy giảm xuống 0 nhưng tôi có thể đọc thêm 5 byte mà không bị chặn. Sau đó, dd
khối lại cho đến khi entropy đạt 64.
Ý nghĩa chính xác của entropy_avail là gì và làm cách nào tôi có thể phát hiện số bit ngẫu nhiên có sẵn thực sự?