SecureRandom$B$,CY$$(B

MoonWolfe$B$G$9!#e(B

lib/securerandom.rbe$B$,$$$m$$$m$JLL$GCY$$$h$&$J5$$,$7$^$9!#e(B

(a)random_bytese$B$,<B9T$5$l$k$^$G<BAu$,7h$^$i$J$$e(B
loade$B;~$Ke(Brandom_bytese$B$r$=$l$>$lDj5A$7$?$[$&$,8zN(E*$8$c$J$$$G$9$+e(B?

(b)/dev/urandome$B$rKh2se(Bopen,closee$B$9$k$N$OL5BL$G$O$J$$$+e(B?
opene$B$7$C$Q$J$7$O$h$/$J$$$s$G$9$+$Me(B?

(c)NotImplementedErrore$B$re(Brescuee$B$9$k$N$O;~4V$NL5BLe(B
raisee$B$5$l$k>l=j!“%?%$%_%s%0$,$”$^$j$h$m$7$/$J$$$+$H;W$$$^$9!#e(B
loade$B;~$Ke(Braisee$B$7$F$/$l$?$[$&$,4r$7$$$G$9!#e(B

MoonWolf [email protected]

2010e$BG/e(B9e$B7ne(B10e$BF|e(B21:53 [email protected]:

lib/securerandom.rbe$B$,$$$m$$$m$JLL$GCY$$$h$&$J5$$,$7$^$9!#e(B

(Unix e$B$G$Oe(B) e$BIaDLe(B openssl
e$B$,;H$o$l$k$@$m$&!"$H;W$C$F$$$k$N$G!“e(B
/dev/urandom
e$B$N>l9g$K$D$$$FB.EY$r$”$^$j5$$K$7$F$$$J$$$N$O$=$N$H$*$j$G$9!#e(B

(a)random_bytese$B$,<B9T$5$l$k$^$G<BAu$,7h$^$i$J$$e(B
loade$B;~$Ke(Brandom_bytese$B$r$=$l$>$lDj5A$7$?$[$&$,8zN(E*$8$c$J$$$G$9$+e(B?

e$B$I$N$/$i$$8zN(E*$J$s$G$7$g$&$+!#e(B

(b)/dev/urandome$B$rKh2se(Bopen,closee$B$9$k$N$OL5BL$G$O$J$$$+e(B?
opene$B$7$C$Q$J$7$O$h$/$J$$$s$G$9$+$Me(B?

e$B;H$o$J$$$H$-$be(B fd e$B$,;D$C$F$$$k$N$O9%$-$8$c$J$$$G$9$M!#e(B

(c)NotImplementedErrore$B$re(Brescuee$B$9$k$N$O;~4V$NL5BLe(B
raisee$B$5$l$k>l=j!“%?%$%_%s%0$,$”$^$j$h$m$7$/$J$$$+$H;W$$$^$9!#e(B
loade$B;~$Ke(Braisee$B$7$F$/$l$?$[$&$,4r$7$$$G$9!#e(B

e$B$R$H$D$N%"%W%j%1!<%7%g%s$G;H$C$?$j;H$o$J$+$C$?$j$9$k>l9g$K$Oe(B
e$B<B:]$K@8@.$9$k$H$-$N$[$&$,$$$$$s$8$c$J$$$G$7$g$&$+!#e(B