随机数生成

通过 /dev/random/dev/urandom 可以获取由linux内核产生的随机数。下面的介绍将帮助那些使用 random 和 urandom 设备的程序(例如:OpenSSH)的运行。

在linux系统刚刚启动的时候,没有太多的互动操作,熵比较低,所以用来计算随机数的 数据还处于一个可以预测的状态。这个就使linux每次产生的随即数有可能是相同的。为了克服这个现象, 你需要在启动的时候调用上次关机时的熵比较高的信息,下面的init.d 脚本帮助自动完成这一系列工作。

cat > /etc/rc.d/init.d/random << "EOF"

#!/bin/sh
# $rc_base/init.d/random 开始

# 基于 sysklogd 脚本( LFS-3.1 或者更早版本 )
# Rewritten by Gerard Beekmans  - [email protected]
# Random script elements by Larry Lawrence

source /etc/sysconfig/rc
source $rc_functions

case "$1" in
        start)
                echo "Initializing kernel random number generator..."
                if [ -f /var/tmp/random-seed ]; then
	                cat /var/tmp/random-seed >/dev/urandom
		fi
		dd if=/dev/urandom of=/var/tmp/random-seed count=1 &>/dev/null
		evaluate_retval
		;;

	stop)
		echo "Saving random seed..."
		dd if=/dev/urandom of=/var/tmp/random-seed count=1 &>/dev/null
		evaluate_retval
		;;

        *)
                echo "Usage: $0 {start|stop}"
                exit 1
                ;;
esac

# $rc_base/init.d/random 结束
EOF
chmod 755 /etc/rc.d/init.d/random

在rc.d的相关目录中建立符号链接
cd /etc/rc.d/init.d &&
ln -sf ../init.d/random ../rc0.d/K45random &&
ln -sf ../init.d/random ../rc2.d/S25random &&
ln -sf ../init.d/random ../rc3.d/S25random &&
ln -sf ../init.d/random ../rc4.d/S25random &&
ln -sf ../init.d/random ../rc5.d/S25random &&
ln -sf ../init.d/random ../rc6.d/K45random