Secrand.rb

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

trunke$B$Ke(Blib/secrand.rbe$B$,F~$j$^$7$?$,!"$3$l$rF~$l$k$K;j$C$?7P0^$C$F$I$3$+e(B
e$B$G8+$i$l$^$9$+e(B? e$B!JFC$KH?BP$H$$$&$o$1$8$c$"$j$^$;$s!Ke(B

OpenSSL 0.9.6e$B0JA0e(B + /dev/urandome$B$,$J$$4D6-$G$O!“e(B
OpenSSL::Random.random_bytese$B$,$J$s$+Nc30$r>e$2$?$h$&$J5$$,$7$^$9!#e(B
e$B$”$$$K$/<j85$K$=$s$J4D6-$,$J$$$s$G$9$,!"!V$J$R$N;W$$0c$$$G$"$k!W$3$H$r3Ne(B
e$BG’$G$-$k?M$O$$$^$;$s$+$Me(B?
e$B$b$7>e$,$k$J$i!"$3$l$b=&$C$Fe(Bfallbacke$B$9$k$H$$$$e(B
e$B$+$b!#4*0c$$$@$C$?$i$9$$$^$;$s!#e(B

SecRande$B$H$$$&L>A0$O$I$&$J$N$+$J!<!#e(B

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.5 (Cygwin)

iQEVAwUBRmkGax9L2jg5EEGlAQLeAwf/REcMMdaAftkuvCdmkWhyiJRryg+CII9/
xtGQ0PthrEfak3T+H/7a2CVH5oyPq85sT1YB5MRBTFNwbnCQjzzIobhyubS3NOzF
c2JRkSdx4WmW8yc8pezUUZtiyziHpiC64h3LidviF0/B0gFxLHXaOvafU6+S9XGO
sTM5YeZyJlaHN87xjbS59J2MsVUxEJ0/oSsTTXPup9uf7rDAZii82QETRGNYZ9rO
B5FZIpqut+OKMxJLnRPi3kmwK3W0Jykh26qT73+m8GRcQOlV+fpp454eAc/zyM7V
ZLuY9wctIAScH70akRGX5M2QWv99V9U6n3ugYE5vmZjpa+9MoTFnCQ==
=Qa62
-----END PGP SIGNATURE-----

In article [email protected],
“NAKAMURA, Hiroshi” [email protected] writes:

trunke$B$Ke(Blib/secrand.rbe$B$,F~$j$^$7$?$,!“$3$l$rF~$l$k$K;j$C$?7P0^$C$F$I$3$+e(B
e$B$G8+$i$l$^$9$+e(B? e$B!JFC$KH?BP$H$$$&$o$1$8$c$”$j$^$;$s!Ke(B

e$B$"$j$^$;$s!#e(B

e$B:#F|BPLL$GAjCL$7$FF~$l$k9g0U$,$H$l$?$N$GF~$l$^$7$?!#e(B

OpenSSL 0.9.6e$B0JA0e(B + /dev/urandome$B$,$J$$4D6-$G$O!“e(B
OpenSSL::Random.random_bytese$B$,$J$s$+Nc30$r>e$2$?$h$&$J5$$,$7$^$9!#e(B
e$B$”$$$K$/<j85$K$=$s$J4D6-$,$J$$$s$G$9$,!“!V$J$R$N;W$$0c$$$G$”$k!W$3$H$r3Ne(B
e$BG’$G$-$k?M$O$$$^$;$s$+$Me(B? e$B$b$7>e$,$k$J$i!"$3$l$b=&$C$Fe(Bfallbacke$B$9$k$H$$$$e(B
e$B$+$b!#4*0c$$$@$C$?$i$9$$$^$;$s!#e(B

e$B$@$l$+3NG’$,$H$l$^$7$?$iBP1~$7$^$7$g$&!#e(B

SecRande$B$H$$$&L>A0$O$I$&$J$N$+$J!<!#e(B

e$B0-$/$J$$$H;W$&$N$G$9$,!“$b$C$H$$$$L>A0$,$”$l$PJQ$($F$b$$$$$He(B
e$B;W$$$^$9!#$J$K$+$"$j$^$9$+e(B?

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Tanaka A. wrote:

trunke$B$Ke(Blib/secrand.rbe$B$,F~$j$^$7$?$,!"$3$l$rF~$l$k$K;j$C$?7P0^$C$F$I$3$+e(B
e$B$G8+$i$l$^$9$+e(B? e$B!JFC$KH?BP$H$$$&$o$1$8$c$"$j$^$;$s!Ke(B

e$B$"$j$^$;$s!#e(B

e$B:#F|BPLL$GAjCL$7$FF~$l$k9g0U$,$H$l$?$N$GF~$l$^$7$?!#e(B

e$B$J$k$[$I!#e(B

SecRande$B$H$$$&L>A0$O$I$&$J$N$+$J!<!#e(B

e$B0-$/$J$$$H;W$&$N$G$9$,!"$b$C$H$$$$L>A0$,$"$l$PJQ$($F$b$$$$$He(B
e$B;W$$$^$9!#$J$K$+$"$j$^$9$+e(B?

SecureRandome$B$,$$$$$H;W$$$^$9!#e(BSecRand /
secrande$B$O!“3NN)$5$l$?N,>N$G$b$Je(B
e$B$$$H;W$$$^$9$7!”?75,$KN,>N$H$7$FF3F~$9$k$[$I$NL>>N$N$h$&$K$O!";d$O;W$$$^e(B
e$B$;$s!#e(BSecureRandome$B$N>l9g!"%U%!%$%kL>$Oe(Bsecurerandom.rbe$B!#e(B

e$B$^$?!"4X?t8F$S=P$77A<0$OI,MW$G$7$g$&$+!#%3%s%9%H%i%/%?E*$G$J$$e(BSecRande$B%be(B
e$B%8%e!<%k$K!"e(BSecRande$B4X?t$O$=$0$o$J$$$h$&$J5$$,$7$^$9!#$3$A$i$O4X?t7A<0$Ke(B
e$BBP$9$k!"8D?ME*$J;W$$$G$9$,!#e(B

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.5 (Cygwin)

iQEVAwUBRmlEXx9L2jg5EEGlAQIF7gf9Hjgsrg9HgX9Xg0YOF+7KmhnNJyTVmkDg
TiZT1d7xpc10+ltU6damYo48OjLeCCpo7mCT5Ry2OrsEFT4CA2aDGdtD6VSQE7ep
2a0VfA1teMKwIZZQ7oaeswVa7HHpdP7prrJHyGK6AQ1hqaZLXthfoJMpQUtVq7Ma
cpLI8G2kKYYfZrOBOcXd3vdt7oKgG2TkMijXfGdjMLehtKblqpCE2wom2csMFHX8
c93DHF5JrCcFrfELKbgRr9/jnCOdxdcZsQVa0Re2ZEaQMQajjMBddBirqZkXej40
W0O7lPjeDgu3PvPYzi2cQ1G9Xs/9I5Ea9yjd9sDQR0VHKtHcs6K4EQ==
=2y91
-----END PGP SIGNATURE-----

In article [email protected],
“NAKAMURA, Hiroshi” [email protected] writes:

SecureRandome$B$,$$$$$H;W$$$^$9!#e(BSecRand / secrande$B$O!“3NN)$5$l$?N,>N$G$b$Je(B
e$B$$$H;W$$$^$9$7!”?75,$KN,>N$H$7$FF3F~$9$k$[$I$NL>>N$N$h$&$K$O!“;d$O;W$$$^e(B
e$B$;$s!#e(BSecureRandome$B$N>l9g!”%U%!%$%kL>$Oe(Bsecurerandom.rbe$B!#e(B

e$B$U$`!#$=$l$O9M$($?$N$G$9$,!"D9$9$.$k$H;W$C$F$d$a$?$N$G$9!#e(B

securerandom.rb e$B$Oe(B 16e$BJ8;z$G!"e(Blib e$B0J2<$G0lHVD9$$e(B
resolv-replace.rb e$B$Ne(B 18e$BJ8;z$K<!$$$GD9$/$J$j$^$9!#e(B

resolv-replace.rb e$B$O%/%i%9!&%b%8%e!<%kL>$K$OBP1~$7$^$;$s$+$i!"e(B
e$B%/%i%9!&%b%8%e!<%kL>$G$$$($Pe(B (e$B$?$V$se(B)
e$B0lHVD9$/$J$j$^$9!#e(B

e$B$^$!!“e(Bresolv-replace.rb (e$B$d!”$=$N<!$KD9$$e(B prettyprint.rb)
e$B$Ne(B
e$B$3$H$r9M$($k$H;d$,$$$&$N$b$J$s$G$9$,!"$d$C$Q$jD9$9$.$k$N$Oe(B
e$B$A$g$C$H$h$m$7$/$J$$$He(B (e$BH?>J$b9~$a$Fe(B) e$B;W$&$N$G$9!#e(B

e$B$^$?!"4X?t8F$S=P$77A<0$OI,MW$G$7$g$&$+!#%3%s%9%H%i%/%?E*$G$J$$e(BSecRande$B%be(B
e$B%8%e!<%k$K!"e(BSecRande$B4X?t$O$=$0$o$J$$$h$&$J5$$,$7$^$9!#$3$A$i$O4X?t7A<0$Ke(B
e$BBP$9$k!"8D?ME*$J;W$$$G$9$,!#e(B

e$B$=$&$$$o$l$F$_$k$H!“$3$l$OL5$/$F$b$$$$$+$b$7$l$^$;$s!#e(B
e$B$”$k$$$O!"e(BSecRand e$B$N%b%8%e!<%k4X?t$K$9$k$+!#e(B

In article [email protected],
“NAKAMURA, Hiroshi” [email protected] writes:

e$BD9$$%U%!%$%kL>$Oe(BRubye$B$K9g$o$J$$46$8$,$7$^$9$M!#$J$s$G$G$7$g$&!#Bg%/%i%9<ge(B
e$B5A$@$+$ie(B? e$B$H$9$k$HK\6Z$Oe(Brandom.rbe$B$+$J!#$=$7$FC/$+$,e(BRandome$B%/%i%9$r=q$/!#e(B
Railse$B$_$?$$$J$N$,N.9T$l$P!"<o$,e(B1e$B$D$8$c:$$k$G$7$g$&!#$C$F!"C/$b:$$C$F$J$$e(B
e$B$s$+$M!#e(B

e$BD9$$L>A0$O;H$$$K$/$$$+$i!“$+$J$!!#>JN,$7$FC;$/$9$k$N$O@5$7$/e(B
e$B$OL5$$$1$I!”;H$$$d$9$5$N$?$a$K$O$“$($FF’$_9~$`!”$H$$$&47=,$Oe(B
e$B$"$k$H;W$&!#e(B

e$B<o$,e(B1e$B$D$8$c:$$k!"$H$$$&$N$O$h$/$o$+$j$^$;$s!#%7%_%e%l!<%7%ge(B
e$B%sMQ$N5?;wMp?t$J$i$=$&$G$7$g$&$,!“e(Bcookie e$B$K;H$&e(B secure
random number e$B$J$i$R$H$D$”$l$P$$$$$h$&$J!#e(B

e$B;d$@$C$?$i!“e(Bsecurerandom.rbe$B$H$$$&$+$C$30-$$L>A0$N$^$^DI2C$7$F!”!V$"!<$$e(B
e$B$D$+D>$5$J$-$c!W$H$$$&%H%2$K$7$^$9!#$=$7$F$$$D$+D>$9!#$7$+$7!"8_49@-$N$3e(B
e$B$H$r9M$($k$H!"I8=`E:IU%i%$%V%i%j$G$=$s$J$3$H$O$G$-$J$$$+!#e(B

e$B;d$b%a%=%C%IL>$K$D$$$F$O$=$N$h$&$J<jCJ$r$h$/$H$j$^$9!#e(B

e$B$G$b!"%U%!%$%k$O8E$$$N$,;D$C$F$$$k$HL>c$j$G$9$7!#e(B

e$B$$7$m!"$3$N7o$K$D$$$F$OD9$$$[$&$,$$$$$N$@!"$H$$$&@Q6KE*$J<ge(B e$BD%$O$G$-$^$;$s$+$M!#Nc$($P!"$7$P$i$/9M$($F;W$$IU$-$^$7$?$,!"e(B cookie e$B$N@8@.$J$s$F8D!9$Ne(B webapplication e$B$,$d$k$b$N$8$c$J$/e(B e$B$Fe(Bframework e$B$,$d$k$Y$-$b$N$@$+$i!"e(Bsecure random number e$B$rD>e(B e$B@\;H$&%W%m%0%i%$O>/$J$/$F!“e(Bsecrand e$B$_$?$$$KC;$/$9$k$[$I$NIQe(B
e$BEY$O$J$$!”$H$+!#e(B

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Tanaka A. wrote:

SecureRandome$B$,$$$$$H;W$$$^$9!#e(BSecRand / secrande$B$O!“3NN)$5$l$?N,>N$G$b$Je(B
e$B$$$H;W$$$^$9$7!”?75,$KN,>N$H$7$FF3F~$9$k$[$I$NL>>N$N$h$&$K$O!";d$O;W$$$^e(B
e$B$;$s!#e(BSecureRandome$B$N>l9g!"%U%!%$%kL>$Oe(Bsecurerandom.rbe$B!#e(B

e$B$U$`!#$=$l$O9M$($?$N$G$9$,!"D9$9$.$k$H;W$C$F$d$a$?$N$G$9!#e(B

securerandom.rb e$B$Oe(B 16e$BJ8;z$G!"e(Blib e$B0J2<$G0lHVD9$$e(B
resolv-replace.rb e$B$Ne(B 18e$BJ8;z$K<!$$$GD9$/$J$j$^$9!#e(B

e$B3N$+$KD9$$$G$9$M!#e(B

e$B$G$b!"Bg>fIW$G$9$h!#e(BstandaloneServerStubCreator.rbe$B$_$?$$$J%d%D$b5o$^$9$+e(B
e$B$i!J$3$3$O>iCL!K!#e(B

resolv-replace.rb e$B$O%/%i%9!&%b%8%e!<%kL>$K$OBP1~$7$^$;$s$+$i!"e(B
e$B%/%i%9!&%b%8%e!<%kL>$G$$$($Pe(B (e$B$?$V$se(B) e$B0lHVD9$/$J$j$^$9!#e(B

e$B$^$!!“e(Bresolv-replace.rb (e$B$d!”$=$N<!$KD9$$e(B prettyprint.rb) e$B$Ne(B
e$B$3$H$r9M$($k$H;d$,$$$&$N$b$J$s$G$9$,!"$d$C$Q$jD9$9$.$k$N$Oe(B
e$B$A$g$C$H$h$m$7$/$J$$$He(B (e$BH?>J$b9~$a$Fe(B) e$B;W$&$N$G$9!#e(B

e$BD9$$%U%!%$%kL>$Oe(BRubye$B$K9g$o$J$$46$8$,$7$^$9$M!#$J$s$G$G$7$g$&!#Bg%/%i%9<ge(B
e$B5A$@$+$ie(B?
e$B$H$9$k$HK\6Z$Oe(Brandom.rbe$B$+$J!#$=$7$FC/$+$,e(BRandome$B%/%i%9$r=q$/!#e(B
Railse$B$_$?$$$J$N$,N.9T$l$P!"<o$,e(B1e$B$D$8$c:$$k$G$7$g$&!#$C$F!"C/$b:$$C$F$J$$e(B
e$B$s$+$M!#e(B

e$B;d$@$C$?$i!“e(Bsecurerandom.rbe$B$H$$$&$+$C$30-$$L>A0$N$^$^DI2C$7$F!”!V$"!<$$e(B
e$B$D$+D>$5$J$-$c!W$H$$$&%H%2$K$7$^$9!#$=$7$F$$$D$+D>$9!#$7$+$7!"8_49@-$N$3e(B
e$B$H$r9M$($k$H!"I8=`E:IU%i%$%V%i%j$G$=$s$J$3$H$O$G$-$J$$$+!#e(B

e$B$9$C$-$j$7$J$$$^$^$G$9$,!"4:$($FH?BP$9$k$h$&$J$b$N$G$O$J$$$N$G!“B>$NC/$+e(B
e$B$i$bH?BP$,$J$1$l$P!”;d$N%3%a%s%H$O%9%k!<$7$F$/$@$5$$!#e(B

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.5 (Cygwin)

iQEVAwUBRml8CR9L2jg5EEGlAQLxBwf/UiR+qBbefc/yzv1apNKUNIq0x4kzZTA4
b9Cp6ilz9kzegQ3UrHBGLCITvu787LLcGjtEcokMwOY3Vxz5AgQkVjbXGDDHX3Ce
IEgJl4yRtVX7mji8veEZMFAgAT/x0fIZ19WCsL+RxKHc1OQlQRIjp3OX79WsvH1N
BvxR1wZbGHMmBZZZ8muW9sZ3P5Iw66/y5HVC66+ZnNjMlcYZvemCQUQ/4Xq0fEkh
dgNx1n9clNVwPVOK1rn0vkNxlZTJznDMWBBTCGxKXbF5ljgVYagtRXgYzvANx5bD
Or11rCH3YN3Ckt43TRD/7EnN+Pvzfs1X3wHj9FAofscapFHWnrEdYQ==
=WR/L
-----END PGP SIGNATURE-----

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Tanaka A. wrote:

e$BD9$$%U%!%$%kL>$Oe(BRubye$B$K9g$o$J$$46$8$,$7$^$9$M!#$J$s$G$G$7$g$&!#Bg%/%i%9<ge(B
e$B5A$@$+$ie(B? e$B$H$9$k$HK\6Z$Oe(Brandom.rbe$B$+$J!#$=$7$FC/$+$,e(BRandome$B%/%i%9$r=q$/!#e(B
Railse$B$_$?$$$J$N$,N.9T$l$P!"<o$,e(B1e$B$D$8$c:$$k$G$7$g$&!#$C$F!"C/$b:$$C$F$J$$e(B
e$B$s$+$M!#e(B

e$BD9$$L>A0$O;H$$$K$/$$$+$i!"$+$J$!!#>JN,$7$FC;$/$9$k$N$O@5$7$/e(B
e$B$OL5$$$1$I!";H$$$d$9$5$N$?$a$K$O$"$($FF’$_9~$`!"$H$$$&47=,$Oe(B
e$B$"$k$H;W$&!#e(B

e$B$O$$!#e(Bostructe$B$de(Bpstoree$B$,$"$k$N$G!";d$b!V?75,$KN,>N$H$7$FF3F~$9$k$[$I$NL>e(B
e$B>N!W$G$"$l$P!“5$$K$J$i$J$+$C$?$H;W$$$^$9!#$3$3$G!V?75,$KN,>N$H$7$FF3F~$9e(B
e$B$k$[$I$NL>>N!W$K$J$j$&$kM}M3$H$7$F$O!”!V8GM-L>;l$H$7$F3P$(0W$$!W!V8m$j0We(B
e$B$$MxMQK!$+$i@5$7$$MxMQK!$X$NM6F3$K$J$k!W$J$I!#e(B

e$B$H$$$&$o$1$G!":G=i$O!“e(Bsrandom.rbe$B$O$I$&$+$HDs0F$7$h$&$H;W$C$?$s$G$9$,!“e(B
e$B$3$N>l9g4X?tL>$Oe(Bsrandom()e$B$G!”$=$l$Oe(Bsrand()e$B$H:.F1$9$k$N$GBLL$@!”$H!#e(B
e$B4X?t7A<0$,$J$/$J$C$?:#!"e(Bsrandom.rbe$B$O$I$&$G$9$+$Me(B?
SRandom.random_bytese$B!#e(B

e$B<o$,e(B1e$B$D$8$c:$$k!"$H$$$&$N$O$h$/$o$+$j$^$;$s!#%7%_%e%l!<%7%ge(B
e$B%sMQ$N5?;wMp?t$J$i$=$&$G$7$g$&$,!“e(Bcookie e$B$K;H$&e(B secure
random number e$B$J$i$R$H$D$”$l$P$$$$$h$&$J!#e(B

cookiee$B$K;H$&e(Bsecure
RNGe$B$K$D$$$F$O!"$R$H$D$"$l$P$h$$$H;W$$$^$9e(B(*)e$B!#$=$l0Je(B
e$B30$K!“e(Brande$B$He(Bsrande$B$K0MB8$7$F$$$k%i%$%V%i%j$,J#?t$”$C$F!"$=$l$r:.$<$F;H$&e(B
e$B%"%W%j%1!<%7%g%s$N>l9g!"$"$k%i%$%V%i%j$,8F$s$@e(Bsrande$B$,B>$N%i%$%V%i%j$NA0e(B
e$BDs$r2u$9$3$H$O$J$$$+!"$H!#Nc$($P;d$,e(Bsoap4re$B$NCf$G$3$C$=$je(Bsrande$B8F$V$H!“0le(B
e$B=o$K;H$o$l$FH/68$9$k%i%$%V%i%j$H$+!”$J$$$+$J!#e(B

e$B$9$$$^$;$s!"!Ve(BRailse$B$_$?$$$J$N$,N.9T$l$P!W$H$$$&$N$O!"M>7W$@$C$?$+$b!#e(B

Railse$B$8$c$J$/$F$b5/$-$^$9!#e(B

(*)
e$B:#2s$N=$@5$K$h$j!"<o$H$OL54X78$K$J$C$?$o$1$G$9$,!#$3$le(B1.8e$B$K$bF~$l$?e(B
e$B$[$&$,$$$$$H;W$&$J!<e(B > e$B%V%i%s%A%a%s%F%Je(B

e$B;d$@$C$?$i!“e(Bsecurerandom.rbe$B$H$$$&$+$C$30-$$L>A0$N$^$^DI2C$7$F!”!V$"!<$$e(B
e$B$D$+D>$5$J$-$c!W$H$$$&%H%2$K$7$^$9!#$=$7$F$$$D$+D>$9!#$7$+$7!"8_49@-$N$3e(B
e$B$H$r9M$($k$H!"I8=`E:IU%i%$%V%i%j$G$=$s$J$3$H$O$G$-$J$$$+!#e(B

e$B;d$b%a%=%C%IL>$K$D$$$F$O$=$N$h$&$J<jCJ$r$h$/$H$j$^$9!#e(B

e$B$G$b!"%U%!%$%k$O8E$$$N$,;D$C$F$$$k$HL>c$j$G$9$7!#e(B

e$B$=$&$G$9$M!#e(B1.9e$B$G$b$7e(Brubygemse$B$,F~$k$J$i!"%U%#!<%A%c!<MxMQ@k8@!J$C$F$$$&e(B
e$B$+e(Brequiree$B!K$re(Bhooke$B$G$-$k;EAH$$rF~$l$F!"$=$3$G!"B8:$7$J$$%U%!%$%kL>$N;Xe(B
e$BDj$rDO$^$($F=q$-49$($i$l$l$P$$$$$N$+$J!#e(B

e$B$$7$m!"$3$N7o$K$D$$$F$OD9$$$[$&$,$$$$$N$@!"$H$$$&@Q6KE*$J<ge(B e$BD%$O$G$-$^$;$s$+$M!#Nc$($P!"$7$P$i$/9M$($F;W$$IU$-$^$7$?$,!"e(B cookie e$B$N@8@.$J$s$F8D!9$Ne(B webapplication e$B$,$d$k$b$N$8$c$J$/e(B e$B$Fe(Bframework e$B$,$d$k$Y$-$b$N$@$+$i!"e(Bsecure random number e$B$rD>e(B e$B@\;H$&%W%m%0%i%$O>/$J$/$F!“e(Bsecrand e$B$_$?$$$KC;$/$9$k$[$I$NIQe(B
e$BEY$O$J$$!”$H$+!#e(B

e$B:G=i$K>e5-$NO@5r$b9M$($?$s$G$9$,!“e(Bcookiee$B$N@8@.$7$+9M$($J$$$N$G$”$l$P!"$=e(B
e$B$b$=$be(Bsecrand.rbe$B$J$s$FDI2C$;$:$K!"e(Bcgi/session.rbe$B$KDI2C$9$j$c$$$$$G$9$he(B
e$B$M!#$=$&$7$J$+$C$?$C$F$3$H$O!“HFMQ$N!Je(Bcookiee$B$N@[email protected]$G$b;H$o$l$k!Ke(B
secure
RNGe$B$,M_$7$$!”$H$$$&7P0^$@$m$&$H;W$$$^$7$?!J$=$l$G:G=i$K7P0^$rJ9$-e(B
e$B$^$7$?!K!#e(B

e$B$@$H$9$l$P!“e(BRNGe$B$H$7$Fe(Brand/srande$B$r;H$C$F$$$?$[$H$s$I$NAX$K!”%9%`!<%:$K?7e(B
RNGe$B$K0\9T$7$F$[$7$$$o$1$G!"$d$O$jC;$$L>>N$N$[$&$,$$$$$H;W$$$^$9!#e(B

e$B$H$$$&$o$1$G!":#$N$H$3$m!V8GM-L>;l$G$b$J$$N,>N$,$A$g$C$H$J!<!W0J>e$O;W$$e(B
e$B$D$$$F$^$;$s!#e(B# e$B$J$N$G5$$K$;$:$I$&$>e(B

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.5 (Cygwin)

iQEVAwUBRmnarx9L2jg5EEGlAQIfcAf/U5gSHtc3U0LivA4Tbmlrx1X7QIr/Laoj
x5RIXRJlVXLBV3aYqUDZOsXwGpjAvVnpacDmjcgHdh3Uylps6NFwWSWM1A3xK4MU
Xfv6cws9mG676rssrNdK/AR4uLdNKjPeyHJ+vbUqTpm9+QIfiXvuwWBbIiOvhrJx
wooHRsQyA/Kuv5E1WEzgMeNDX+Cw1+rGGVXLa1aAAoIVnFmP+7s+6q9HbM9kq5l9
42IvR/k2EXVcLQ/8ygbJYTgXboFsmAsrrP+JybPaM9fAQMEpBLliqcpfQ28+tFCd
1rjAw9lPpc+dHKVnhLJllwrireRKA0e9pm1pGnVlIcILZEIqS6uMIw==
=8j5a
-----END PGP SIGNATURE-----

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

e$BK\6Z$K4X$7$F$OJL$N?M$N%3%a%s%H$rBT$A$^$9!J$J$1$l$P$J$$$Ge(BOKe$B!K!#OFF;$@$1!#e(B

Tanaka A. wrote:

e$B$?$1$l$P<+A0$G$d$k$N$G$O$J$$$+$H$$$&5$$,$7$^$9!#e(B

e$B$=$&$$$&e(B pseudo random number generator e$B$N%/%i%9$r:G=i$+$ie(B
ruby e$B$,Ds6!$9$k$N$O$"$j$&$k$H;W$$$^$9$,!"e(B

e$BDs6!$7$?$[$&$,$$$$$H;W$C$F$^$9!#$*A0$,$d$l$C$Fe(B?

e$B$b$A$m$s$o$+$C$F$k?M$O<+A0$G:n$k$G$7$g$&$,!"Nc$($P8=>u$Ne(Bcgi/session.rbe$B$Ge(B
e$B$b$d$C$F$J$+$C$?$o$1$G!#e(BRailse$B$N$I$3$>$N%W%i%0%$%s$,e(Bsrande$B$7$?$*$+$2$G!“G’e(B
e$B>Z5!9=$,LrN)$?$J$/$J$C$F$?$H$+!”$$$D$+5/$3$k$s$8$c$J$$$G$9$+$M!#e(B

e$B4JC1$K;H$($kBeBX0F$,$"$l$P!"!V%i%$%V%i%j:n<T$Oe(Brande$B$O4m81$@$+$i;H$&$J!W$He(B
e$B<gD%$70W$/$J$k!#e(B

nonce e$B$C$Fe(B secure random e$B$G$J$$$H$h$m$7$/$J$$$G$9$h$Me(B?

e$B87L)$K8@$($P!“e(Boncee$B$G$”$k$3$H$,$=$NB8:_0U5A$J$N$G!“e(Bsecure
randome$B$G$”$kI,e(B
e$BMW@-$O$"$j$^$;$s!#Nc$($Pe(B0e$B$+$ie(Bincrementale$B$G$be(BOKe$B$G$9!#$G!"e(BRubye$B$G$O!"e(Brande$B$Ge(B
e$B@8@.$7$A$cBLL$G$9!#@h$NOC$N$h$&$K!"C/$+$,0U?^E*$K!“e(Bsrand(1)e$B$H$+Kd$a9~$`e(B
e$B$+$b$7$l$J$$!JKh2sF1$8CM$K$J$k2DG=@-$,$”$j!"e(Boncee$B$8$c$J$/$J$k!K!#e(B

e$B$^$!!“3+H/<T$NC/$b$,87L)$K9M$($k$o$1$8$c$J$$$N$G!”!Ve(Bnoncee$B$K$Oe(B
SecureRandome$B;H$C$H$1!W$H$$$&$N$O$$$$$+$b$7$l$^$;$s!#e(B

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.5 (Cygwin)

iQEVAwUBRmqnOh9L2jg5EEGlAQKyFgf+PH47+MipY9oTmMc1RwQr/c7QnzG5I8Bo
6EtZCY/H25Err8uLbS9xosqaCuIwt1D/BFkyE57sjJP9q+5gqZUFe6+H4xS6htLA
+TMkP3bMDXmG5mKj/6j4f3HKbQFQ6bGAFs53qFX+ZQW6rWZ0okrs0LVurzUiJpZC
moBWKUon44bBeO62zAGssUoW6s1N0+ZzKMnMFY56f9Xrlh17fejE3UG9vMYHRR/o
58xgMRTesonIsftk04FpLbR3POzuBxR0bigJy5x7rhMAQwzPv82oYE7viwhs/+FB
xwktIkm0ZAdl4BGlZ017USVFrApfe1BoJVUUGhtTRrMbBPS6Pgcsig==
=o4LL
-----END PGP SIGNATURE-----

In article [email protected],
“NAKAMURA, Hiroshi” [email protected] writes:

e$B$H$$$&$o$1$G!":G=i$O!“e(Bsrandom.rbe$B$O$I$&$+$HDs0F$7$h$&$H;W$C$?$s$G$9$,!“e(B
e$B$3$N>l9g4X?tL>$Oe(Bsrandom()e$B$G!”$=$l$Oe(Bsrand()e$B$H:.F1$9$k$N$GBLL$@!”$H!#e(B
e$B4X?t7A<0$,$J$/$J$C$?:#!"e(Bsrandom.rbe$B$O$I$&$G$9$+$Me(B? SRandom.random_bytese$B!#e(B

secure e$B$H$$$&C18l$,$o$+$k$N$O=EMW$J$s$8$c$J$$$+$J$!!#e(B

e$B<o$,e(B1e$B$D$8$c:$$k!"$H$$$&$N$O$h$/$o$+$j$^$;$s!#%7%_%e%l!<%7%ge(B
e$B%sMQ$N5?;wMp?t$J$i$=$&$G$7$g$&$,!“e(Bcookie e$B$K;H$&e(B secure
random number e$B$J$i$R$H$D$”$l$P$$$$$h$&$J!#e(B

cookiee$B$K;H$&e(Bsecure RNGe$B$K$D$$$F$O!“$R$H$D$”$l$P$h$$$H;W$$$^$9e(B(*)e$B!#$=$l0Je(B
e$B30$K!“e(Brande$B$He(Bsrande$B$K0MB8$7$F$$$k%i%$%V%i%j$,J#?t$”$C$F!“$=$l$r:.$<$F;H$&e(B
e$B%”%W%j%1!<%7%g%s$N>l9g!“$”$k%i%$%V%i%j$,8F$s$@e(Bsrande$B$,B>$N%i%$%V%i%j$NA0e(B
e$BDs$r2u$9$3$H$O$J$$$+!"$H!#Nc$($P;d$,e(Bsoap4re$B$NCf$G$3$C$=$je(Bsrande$B8F$V$H!“0le(B
e$B=o$K;H$o$l$FH/68$9$k%i%$%V%i%j$H$+!”$J$$$+$J!#e(B

rand e$B$r<+J,$G@jM-$9$k$N$O$“$+$i$5$^$KL5M}$C$]$$$N$G!”$=$&$7e(B
e$B$?$1$l$P<+A0$G$d$k$N$G$O$J$$$+$H$$$&5$$,$7$^$9!#e(B

e$B$=$&$$$&e(B pseudo random number generator e$B$N%/%i%9$r:G=i$+$ie(B
ruby e$B$,Ds6!$9$k$N$O$"$j$&$k$H;W$$$^$9$,!"e(Bsecure random
number generator e$B$O$=$l$H$OJL$NOC$H$$$&$o$1$G!#e(B

(*) e$B:#2s$N=$@5$K$h$j!"<o$H$OL54X78$K$J$C$?$o$1$G$9$,!#$3$le(B1.8e$B$K$bF~$l$?e(B
e$B$[$&$,$$$$$H;W$&$J!<e(B > e$B%V%i%s%A%a%s%F%Je(B

e$B$($'!"5DO@$,$*$5$^$C$?$i!#e(B

e$B$=$&$G$9$M!#e(B1.9e$B$G$b$7e(Brubygemse$B$,F~$k$J$i!"%U%#!<%A%c!<MxMQ@k8@!J$C$F$$$&e(B
e$B$+e(Brequiree$B!K$re(Bhooke$B$G$-$k;EAH$$rF~$l$F!"$=$3$G!"B8:$7$J$$%U%!%$%kL>$N;Xe(B
e$BDj$rDO$^$($F=q$-49$($i$l$l$P$$$$$N$+$J!#e(B

e$B$=$&$$$&5!G=$,F~$i$J$$2DG=@-$b$"$k$7$J$!!#e(B

e$B:G=i$K>e5-$NO@5r$b9M$($?$s$G$9$,!“e(Bcookiee$B$N@8@.$7$+9M$($J$$$N$G$”$l$P!"$=e(B
e$B$b$=$be(Bsecrand.rbe$B$J$s$FDI2C$;$:$K!"e(Bcgi/session.rbe$B$KDI2C$9$j$c$$$$$G$9$he(B
e$B$M!#$=$&$7$J$+$C$?$C$F$3$H$O!“HFMQ$N!Je(Bcookiee$B$N@[email protected]$G$b;H$o$l$k!Ke(B
secure RNGe$B$,M_$7$$!”$H$$$&7P0^$@$m$&$H;W$$$^$7$?!J$=$l$G:G=i$K7P0^$rJ9$-e(B
e$B$^$7$?!K!#e(B

cgi/session.rb e$B0J30$Ge(B cookie e$B$r:n$k$3$H$b$“$j$^$9$h$M!#e(B
e$B$?$H$($Pe(B web application framework e$B$Oe(B (web application
e$B$N?te(B
e$B$h$j$O$:$$$V$s$H>/$J$$$G$7$g$&$,e(B) e$B$?$/$5$s$”$k$o$1$G!"$=$N6&e(B
e$BDLItJ,$O$<$R;Y1g$9$Y$-$@$H;W$$$^$9!#e(B

e$B$“$H!”$-$C$+$1$H$7$F:G6a<j85$Ge(B digest auth e$B$Ne(B client
e$B$r=q$$e(B
e$B$Fe(B cnonce e$B$N@8@.$KM_$7$+$C$?$H$$$&$3$H$b$"$j$^$7$F!#e(B

e$B$"$H!"e(Bwebrick e$B$Ne(B digest auth e$B$Ne(B opaque
e$B$H$+!"e(Bimap e$B$Ne(B cnonce
e$B$H$+!“e(Bsecure random
e$B$N$[$&$,$h$m$7$+$m$&$H$$$&$N$b$”$j$^$9$7!#e(B

nonce e$B$C$Fe(B secure random e$B$G$J$$$H$h$m$7$/$J$$$G$9$h$Me(B?

e$B$@$H$9$l$P!“e(BRNGe$B$H$7$Fe(Brand/srande$B$r;H$C$F$$$?$[$H$s$I$NAX$K!”%9%`!<%:$K?7e(B
RNGe$B$K0\9T$7$F$[$7$$$o$1$G!"$d$O$jC;$$L>>N$N$[$&$,$$$$$H;W$$$^$9!#e(B

e$B$H$$$&$o$1$G!":#$N$H$3$m!V8GM-L>;l$G$b$J$$N,>N$,$A$g$C$H$J!<!W0J>e$O;W$$e(B
e$B$D$$$F$^$;$s!#e(B# e$B$J$N$G5$$K$;$:$I$&$>e(B

e$B$J$K$+0U8+$,$"$k$R$H$OB>$K$$$^$;$s$+$Me(B?

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

e$BAjJQ$o$i$:K\6Z0J30$NOFF;$@$1!#$=$&$$$($P5nG/$Ne(BRubyKaigi2006e$B$G$O!"$=$s$Je(B
e$B%W%l%<%s$r$5$;$F$$$?$@$$$?$N$G$7$?!#e(B
http://dev.ctor.org/download/RubyKaigi2006_SAP_20060610.pdf

SecRande$B%M%?e(B

Tanaka A. wrote:

e$B$f$>$5$s$K8}F,$G?R$M$F$_$?$s$G$9$,!“e(BSecureRandom e$B$,$$$$$H$Ne(B
e$B$3$H$G!”$J$R$5$s$H$f$>$5$s$NFs?M$+$i$=$&$$$o$l$k$H!“$=$C$A$Ne(B
e$B6H3&$N8+<1$H$$$&$b$N$@$H46$8$6$k$rF@$^$;$s!#$H$$$&$o$1$Ge(B
SecureRandom e$B$+$J$!!”$H;W$C$F$$$^$9!#e(B

Javae$B$,e(BSecureRandome$B$J$s$G$9$h!#$G!"9-$/;H$o$l$F$k%;%-%e%j%F%#e(BAPIe$B$Ne(BOOe$B$J$be(B
e$B$N$Oe(BJavae$B$,=i$a$F$G!"B>$Ke(B.NETe$B$/$i$$$7$+$J$$$G$9$+$i$M!#e(B.NETe$B$Oe(B
System.Security.Cryptography.RandomNumberGeneratore$B$G$9!J0E9fMQ$Ne(BRNGe$B!K!#e(B

e$B$H$$$&$o$1$G!“!V6H3&!W$H$$$&$He(BJavae$B=E;k$K$J$k$N$G!”$"$^$j6H3&1>!9$O9M$($Je(B
e$B$$$G$$$$$H;W$$$^$9!J$J$N$G?($l$F$3$J$+$C$?!K!#e(B

e$BB>$N0U8+$b$"$l$PJ9$-$?$$$G$9!#e(B

e$B$H$$$&$o$1$G:F$SBT$A!#e(B

/ / /

Randome$B?7@_%M%?!#e(B

e$B$=$&$$$&e(B pseudo random number generator e$B$N%/%i%9$r:G=i$+$ie(B
ruby e$B$,Ds6!$9$k$N$O$"$j$&$k$H;W$$$^$9$,!"e(B
e$BDs6!$7$?$[$&$,$$$$$H;W$C$F$^$9!#$*A0$,$d$l$C$Fe(B?

e$B$^$!!"<j$rF0$+$9?M$,0l?M$b$$$J$1$l$PDs6!$5$l$^$;$s$+$i$M!#e(B

Random e$B$H$$$&L>A0$N%/%i%9$Ge(B Random#srand e$B$He(B Random#rand e$B$H$$e(B
e$B$&%a%=%C%I$,$“$C$FCf?H$N%”%k%4%j%:%`$,e(B srand/rand e$B$HF1$8!"$He(B
e$B$$$&$N$r$@$l$+$,<BAu$D$-$G=P$;$P$9$0$KF~$C$A$c$&$s$8$c$J$$$+e(B
e$B$H$$$&5$$,$7$^$9!#e(B

#rande$B!"e(B#srande$B$O$^$?L>A0$G$b$a$k$+$b$7$l$^$;$s$M!#Nc$($Pe(BSecRande$B$Oe(B
#random_bytese$B$@$7!#e(B

/ / /

PRNGe$B%M%?!#e(B

e$B6qBNE*$K$O$I$NG’>Z5!9=$,$=$&$$$&%/%i%9$rI,MW$H$9$k$s$G$9$+e(B?

e$BA[Dj$7$F$$$?$N$O!“e(Bcgi/session.rbe$B$G$NMxMQ$N$h$&$J!”!V?dB,IT2DG=$J<1JL;R$re(B
e$B:n$k!W$H$$$&L\E*$G$NMxMQ$G$7$?!#!VG’>Z5!9=$,!W$H$$$&$N$O!"2#$Ge(Bnoncee$B$NOCe(B
e$B$r$7$F$$$k;~$K$O!"ITMW$KJ6$i$o$7$$=q$-J}$G$7$?!#e(B

/ / /

noncee$B%M%?!#e(B

e$B$8$F$$$k9`$,$"$j$^$9!#e(B
(RFC 2617 e$B$Ne(B 4.3 Limited Use Nonce Values)

e$B$=$l$rFI$`$HE>Aw8zN($N$?$a$K8E$$e(B nonce e$B$r$“$kDxEY<u$1IU$1$ke(B
e$B$3$H$b$”$k!"$H;W$($^$9!#e(B

e$B$=$&$$$&>l9g$O$I$&$J$s$G$7$g$&e(B?

e$B$O$$!“5!9=$+$i9M$($k$H!“e(Breplay
attacke$BHr$1$N$?$a$K!V0lEY$@$1!W$H$7$?$[$&e(B
e$B$,$h$$$N$G$9$,!”>c32$K$h$k@ZCG”*%j%/%(%9%H:FAw$J$I$N>u67$r9M$($k$H!“$”$ke(B
e$BDxEY8E$$e(Bnoncee$B$r<u$1IU$1$6$k$rF@$J$$$H;W$$$^$9!#!Je(BRFC2617e$B$r$A$c$s$HFI$s$Ge(B
e$B$O$$$J$$$N$G!"MQ8l$H$+JQ$+$b$7$l$^$;$s!K!#e(B

e$B$D$^$je(Boncee$B$8$c$J$$$8$c$s!“$I$&$7$Fe(B?
e$B$H$$$&;XE&$@$H;W$$$^$9$,!”$3$N$h$&$Je(B
e$B>l9g$G$b!"8E$$e(Boncee$B$rL5@)8B$K<u$1IU$1$F$bLdBj$,5/$3$i$J$$$H$$$&$3$H$G$O$Je(B
e$B$/!“2DG=$J8B$je(Boncee$B$J$b$N$H$7$F07$&$Y$-$G$9!#e(Bnoncee$B$K%?%$%`%9%?%s%W$rKd$ae(B
e$B$F=pL>$7$?$j!”%5!<%PB&$G;~9o$H6&$K5-21$7$?$j!#e(B

e$B$H$$$&2sEz$G$“$C$F$^$9e(B?
e$B85$NOC$HN%$l$9$.$J$N$G!”!V$=$&$$$&$3$H$,J9$-$?$$e(B
e$B$s$8$c$J$$$h!W$J5$$,$7$F$$$^$9!#e(B

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.2.1 (Cygwin)

iQEVAwUBRms3Rh9L2jg5EEGlAQLUIwf/X536+hI84iuRiNcLVHKmFj5B6J422Jmb
JXThOM4hh/PXaXdokFziGVhUFxqy2YO1mTU8pQJ6povK58kjClotQMJMi0TmYyus
adpn0h2kERPL1mYGM9Xo6+ezK4k2/UcMy6KoA3a67CDTu/pG47Y1X+xmdbqbPtXw
k9UkkPuPZmkKezbzHU9eGcFNnSXG1rIXsDylw3vSHxPoWy8DIY7iS8GfPm8S+aoH
i6lU8qTbAd6chx5jtDr7w7GNtZdYa2zi9NGGEmuwWhGtV45hSD7ZS3y3WUhC3yzE
MNDmzuTSgPdGr+No7k+WUrd3PcSvPem7Y/6fKalG2bN0RueJD8PF8w==
=bykI
-----END PGP SIGNATURE-----

In article [email protected],
“NAKAMURA, Hiroshi” [email protected] writes:

e$BK\6Z$K4X$7$F$OJL$N?M$N%3%a%s%H$rBT$A$^$9!J$J$1$l$P$J$$$Ge(BOKe$B!K!#OFF;$@$1!#e(B

e$B$f$>$5$s$K8}F,$G?R$M$F$_$?$s$G$9$,!“e(BSecureRandom e$B$,$$$$$H$Ne(B
e$B$3$H$G!”$J$R$5$s$H$f$>$5$s$NFs?M$+$i$=$&$$$o$l$k$H!“$=$C$A$Ne(B
e$B6H3&$N8+<1$H$$$&$b$N$@$H46$8$6$k$rF@$^$;$s!#$H$$$&$o$1$Ge(B
SecureRandom e$B$+$J$!!”$H;W$C$F$$$^$9!#e(B

e$BB>$N0U8+$b$"$l$PJ9$-$?$$$G$9!#e(B

e$B$=$&$$$&e(B pseudo random number generator e$B$N%/%i%9$r:G=i$+$ie(B
ruby e$B$,Ds6!$9$k$N$O$"$j$&$k$H;W$$$^$9$,!"e(B

e$BDs6!$7$?$[$&$,$$$$$H;W$C$F$^$9!#$*A0$,$d$l$C$Fe(B?

e$B$^$!!"<j$rF0$+$9?M$,0l?M$b$$$J$1$l$PDs6!$5$l$^$;$s$+$i$M!#e(B

Random e$B$H$$$&L>A0$N%/%i%9$Ge(B Random#srand e$B$He(B Random#rand
e$B$H$$e(B
e$B$&%a%=%C%I$,$“$C$FCf?H$N%”%k%4%j%:%`$,e(B srand/rand e$B$HF1$8!"$He(B
e$B$$$&$N$r$@$l$+$,<BAu$D$-$G=P$;$P$9$0$KF~$C$A$c$&$s$8$c$J$$$+e(B
e$B$H$$$&5$$,$7$^$9!#e(B

e$B$b$A$m$s$o$+$C$F$k?M$O<+A0$G:n$k$G$7$g$&$,!"Nc$($P8=>u$Ne(Bcgi/session.rbe$B$Ge(B
e$B$b$d$C$F$J$+$C$?$o$1$G!#e(BRailse$B$N$I$3$>$N%W%i%0%$%s$,e(Bsrande$B$7$?$*$+$2$G!“G’e(B
e$B>Z5!9=$,LrN)$?$J$/$J$C$F$?$H$+!”$$$D$+5/$3$k$s$8$c$J$$$G$9$+$M!#e(B

e$B4JC1$K;H$($kBeBX0F$,$“$l$P!”!V%i%$%V%i%j:n<T$Oe(Brande$B$O4m81$@$+$i;H$&$J!W$He(B
e$B<gD%$70W$/$J$k!#e(B

e$B$I$&$b4m81@-$K<B46$,M/$+$J$$$J$!!“$H;W$C$F$=$N860x$r$7$P$i$/e(B
e$B9M$($?$H$3$m!”>e$G=R$Y$?e(B Random e$B$N$h$&$J%/%i%9$,I,MW$K$J$kG’e(B
e$B>Z5!9=$N6qBNNc$rCN$i$J$$$+$i$@!"$H;W$$;j$j$^$7$?!#e(B

e$B6qBNE*$K$O$I$NG’>Z5!9=$,$=$&$$$&%/%i%9$rI,MW$H$9$k$s$G$9$+e(B?

nonce e$B$C$Fe(B secure random e$B$G$J$$$H$h$m$7$/$J$$$G$9$h$Me(B?

e$B87L)$K8@$($P!“e(Boncee$B$G$”$k$3$H$,$=$NB8:_0U5A$J$N$G!“e(Bsecure randome$B$G$”$kI,e(B
e$BMW@-$O$"$j$^$;$s!#Nc$($Pe(B0e$B$+$ie(Bincrementale$B$G$be(BOKe$B$G$9!#$G!"e(BRubye$B$G$O!"e(Brande$B$Ge(B
e$B@8@.$7$A$cBLL$G$9!#@h$NOC$N$h$&$K!"C/$+$,0U?^E*$K!“e(Bsrand(1)e$B$H$+Kd$a9~$`e(B
e$B$+$b$7$l$J$$!JKh2sF1$8CM$K$J$k2DG=@-$,$”$j!"e(Boncee$B$8$c$J$/$J$k!K!#e(B

e$B$U$`!#;d$O$“$^$j$h$/$o$+$C$F$$$J$$$h$&$G$9!#e(B
(e$B8@$$Lu$K$O$J$j$^$;$s$,!”;v<B$H$7$FAG?M$K6a$$$N$G$9e(B)

digest auth e$B$G!“8E$$e(B nonce e$B$r<u$1IU$1$k$3$H$NF@<:$K$D$$$FO@e(B
e$B$8$F$$$k9`$,$”$j$^$9!#e(B
(RFC 2617 e$B$Ne(B 4.3 Limited Use Nonce Values)

e$B$=$l$rFI$`$HE>Aw8zN($N$?$a$K8E$$e(B nonce e$B$r$“$kDxEY<u$1IU$1$ke(B
e$B$3$H$b$”$k!"$H;W$($^$9!#e(B

e$B$=$&$$$&>l9g$O$I$&$J$s$G$7$g$&e(B?

e$B$=$l$H$b!"e(BRFC 2617 e$B$O4V0c$C$F$$$F!“8E$$e(B nonce
e$B$r<u$1IU$1$k$3e(B
e$B$H$O$”$j$($J$$$N$G$7$g$&$+e(B?

e$B$^$!!“3+H/<T$NC/$b$,87L)$K9M$($k$o$1$8$c$J$$$N$G!”!Ve(Bnoncee$B$K$Oe(B
SecureRandome$B;H$C$H$1!W$H$$$&$N$O$$$$$+$b$7$l$^$;$s!#e(B

e$B$“$k$$$O!”$=$&$$$&$N$,!V87L)$G$J$$9M$(!W$J$N$G$7$g$&$+e(B?

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Nobuyoshi N. wrote:

Randome$B?7@_%M%?!#e(B

e$B0JA0:n$C$?$N$rH/7!$7$F:G6a$Ne(B1.9e$B$KDI=>$5$;$^$7$?!#$A$g$C$HBg$-$$e(B
e$B$N$Ge(B http://www.rubyist.net/~nobu/ruby/random.diff.bz2 e$B$K!#e(B

e$B$=$m$=$m$^$D$b$H$5$s$K?6$m$&!#$=$N5$$J$+$C$?$i<BAu8!F$$7$F$b0UL#$J$$$7!#e(B
e$B$^$D$b$H$5$s!“e(B[ruby-dev:24475]e$B$N0J2<$O!”:#$G$bJQ$o$j$^$;$s$+e(B?

| rande$B$N<BAu$G$“$ke(BMTe$B$r%*%V%8%'%/%H2=$9$k$3$H$O;?@.$G$9!#$=$N>le(B
| e$B9g!”%/%i%9L>$J$I$r%l%S%e!<$7$F$+$i!#:#$^$G$d$C$F$J$+$C$?$N$Oe(B
| e$BL>A0$H<j?t$NLdBj$@$C$?$+$i!#e(B

e$B%/%i%9L>$Oe(BRandome$B$G$h$$e(B?

#rande$B!"e(B#srande$B$O$^$?L>A0$G$b$a$k$+$b$7$l$^$;$s$M!#Nc$($Pe(BSecRande$B$Oe(B
#random_bytese$B$@$7!#e(B

#rande$B$O!"e(B#random_bytese$B$r%Y!<%9$K$7$F%9!<%Q!<%/%i%9$GDj5A$9$k$[e(B
e$B$&$,$$$$$G$9$+$M$'!#e(B

e$B<BAu$O$"$H$G$I$&$H$G$b$J$k$N$G!"e(Bakre$B$5$s$K%$%s%?!<%U%'!<%9$r7h$a$F$$$?$@e(B
e$B$-$?$$$H$3$m!#;W$o$:e(Brande$B$+$i0\9T$7$?$/$J$k$h$&$JE[$r$*4j$$$7$^$9!#e(B

e$B$H$3$m$GCfED$5$s!"e(B[ruby-dev:24474]e$B$Ne(BMoonWolfe$B$5$s$N$d$D$H$I$C$A$,$h$$e(B?
e$B$I$C$A$be(Bmarshale$B2DG=$@$7!"5!G=E*$J:9$,$J$5$2!#e(B

e$B2?$b$7$J$$26!#e(B

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.2.1 (Cygwin)

iQEVAwUBRm1bGx9L2jg5EEGlAQLu0Qf/XmfJZ3B6EshTvbb10OQ35u4XMY7FIMy8
6+6jKFUiGeYIpTVlPIAmqPU9vIpCrQKjGFcx/FLU8JgYd+3hHfFd1jZwMtOQ+IBO
pmI5OTfzDdLwO8SgtwYV2cKMZYOnXJx8ah67SRLOgp6pyamCVahwe9OqTbqX+eDf
OCZIruSjuXPzTnQqahvdppcDwte5epYKjAGq0uFYsIWggMTTVFdrDXwiAfkkAmCC
jM3wfcncAEzO30PuNtG+OUxfx9yn9DUhoEsOzm+wnwO7dpTDDVWQlGJsjod1FRa2
tT/BVgBwdg5Jibs/9Mh6EURfGNconKn/er7Hlsj36iSYi9mp5KGENA==
=XFcx
-----END PGP SIGNATURE-----

e$B$J$+$@$G$9!#e(B

At Sun, 10 Jun 2007 08:27:39 +0900,
NAKAMURA, Hiroshi wrote in [ruby-dev:30946]:

e$B$$$&$N$r$@$l$+$,<BAu$D$-$G=P$;$P$9$0$KF~$C$A$c$&$s$8$c$J$$$+e(B
e$B$H$$$&5$$,$7$^$9!#e(B

e$B0JA0:n$C$?$N$rH/7!$7$F:G6a$Ne(B1.9e$B$KDI=>$5$;$^$7$?!#$A$g$C$HBg$-$$e(B
e$B$N$Ge(B http://www.rubyist.net/~nobu/ruby/random.diff.bz2
e$B$K!#e(B

#rande$B!"e(B#srande$B$O$^$?L>A0$G$b$a$k$+$b$7$l$^$;$s$M!#Nc$($Pe(BSecRande$B$Oe(B
#random_bytese$B$@$7!#e(B

#rande$B$O!"e(B#random_bytese$B$r%Y!<%9$K$7$F%9!<%Q!<%/%i%9$GDj5A$9$k$[e(B
e$B$&$,$$$$$G$9$+$M$'!#e(B

e$B$^$D$b$He(B e$B$f$-$R$m$G$9e(B

In message “Re: [ruby-dev:30951] Re: secrand.rb”
on Mon, 11 Jun 2007 23:24:56 +0900, “NAKAMURA, Hiroshi”
[email protected] writes:

|e$B$=$m$=$m$^$D$b$H$5$s$K?6$m$&!#$=$N5$$J$+$C$?$i<BAu8!F$$7$F$b0UL#$J$$$7!#e(B
|e$B$^$D$b$H$5$s!“e(B[ruby-dev:24475]e$B$N0J2<$O!”:#$G$bJQ$o$j$^$;$s$+e(B?
|
|| rande$B$N<BAu$G$“$ke(BMTe$B$r%*%V%8%'%/%H2=$9$k$3$H$O;?@.$G$9!#$=$N>le(B
|| e$B9g!”%/%i%9L>$J$I$r%l%S%e!<$7$F$+$i!#:#$^$G$d$C$F$J$+$C$?$N$Oe(B
|| e$BL>A0$H<j?t$NLdBj$@$C$?$+$i!#e(B
|
|e$B%/%i%9L>$Oe(BRandome$B$G$h$$e(B?

e$BJQ$o$j$^$;$s!#L>A0$b$=$l$G$h$$$H;W$$$^$9!#e(B

|e$B<BAu$O$"$H$G$I$&$H$G$b$J$k$N$G!"e(Bakre$B$5$s$K%$%s%?!<%U%'!<%9$r7h$a$F$$$?$@e(B
|e$B$-$?$$$H$3$m!#;W$o$:e(Brande$B$+$i0\9T$7$?$/$J$k$h$&$JE[$r$*4j$$$7$^$9!#e(B

e$B$*4j$$$7$^$9!#e(B

e$B$J$+$@$G$9!#e(B

At Mon, 11 Jun 2007 23:24:56 +0900,
NAKAMURA, Hiroshi wrote in [ruby-dev:30951]:

e$B$H$3$m$GCfED$5$s!"e(B[ruby-dev:24474]e$B$Ne(BMoonWolfe$B$5$s$N$d$D$H$I$C$A$,$h$$e(B?
e$B$I$C$A$be(Bmarshale$B2DG=$@$7!"5!G=E*$J:9$,$J$5$2!#e(B

e$B5!G=E*$K$O$"$s$^$j:9$O$J$$$G$9$1$I!"e(B1.9e$B$K$Oe(Brb_big_rand()e$B$,$J$$e(B
e$B$N$G$=$b$=$b%3%s%Q%$%k$G$-$J$$$N$G$O!#e(B

In article [email protected],
“NAKAMURA, Hiroshi” [email protected] writes:

e$B<BAu$O$"$H$G$I$&$H$G$b$J$k$N$G!"e(Bakre$B$5$s$K%$%s%?!<%U%'!<%9$r7h$a$F$$$?$@e(B
e$B$-$?$$$H$3$m!#;W$o$:e(Brande$B$+$i0\9T$7$?$/$J$k$h$&$JE[$r$*4j$$$7$^$9!#e(B

rand e$B$Ne(B 4e$BJ8;z$H$$$&C;$5$K$O>!$F$J$$$C$Fe(B…

e$B%Q%C%A$r8+$k$H%$%s%?!<%U%'!<%9$O0J2<$N$h$&$K$J$C$F$^$9$M!#e(B

Random < Data
Random#rand
Random.seed
Random.default
Random.default=(klass)
Random.current
Random.current=(rng)

Random::MT < Random
Random::MT#initialize(seed)
Random::MT#float
Random::MT#upto(max_plus_one)
Random::MT#seed

e$B$^$:5$$,$D$/$N$Oe(B Random e$B$8$c$J$/$Fe(B Random::MT
e$B$H$$$&$3$H$G$9!#e(B
e$B$3$l$HJL$N%G%6%$%s$H$7$F$O!“e(BRandom e$B<+BN$re(B Mersenne Twister
e$B$N%/%i%9$K$9$k$H$$$&$b$N$,$”$k$G$7$g$&!#e(B

e$B$*$=$i$/$^$D$b$H$5$s$O8e<T$r9M$($F$$$k$s$8$c$J$$$G$9$+$M!#e(B

e$B;d$be(B Random e$B<+BN$G$$$$$H;W$$$^$9!#I,MW$J$i8e$Ge(B
Random::MT = Random e$B$H$b$G$-$^$9$7!#e(B

Kernel.{rand,srand} e$B$N@ZBX$(MQ$Ke(B default, current
e$B$,$"$j$^$9$,!"e(B
e$B%0%m!<%P%k$J>uBV$rA}$d$9$N$O46?4$7$^$;$s!#e(B

Mersenne Twister e$B$r4|BT$9$k%i%$%V%i%j$H$=$&$G$J$$%i%$%V%i%je(B
e$B$,$“$C$?$H$-!”@ZBX$($GN>J}$N4uK>$rK~$?$9$3$H$O$G$-$^$;$s!#e(B
e$B%i%$%V%i%j$NAH9g$;$N$3$H$r9M$($?$i!"$3$&$$$&5!G=$O$J$$$[$&$,e(B
e$B$$$$$H;W$$$^$9!#e(BMersenne Twister e$B0J30$r;H$$$?$1$l$P<+J,$G@8e(B
e$B@.$7$?e(B random number generator e$B$r<+J,$GJ];}$7$F$*$1$P$$$$$Ge(B
e$B$7$g$&!#e(B

e$B$b$7!"e(BMersenne Twister e$B$r4|BT$9$k%i%$%V%i%j$,B8:_$7$J$$$H$$e(B
e$B$&>u67$,@8$^$l$k$H$7$?$i!“e(BMersenne Twister e$B$KLdBj$,H/8+$5$le(B
e$B$?;~$@$H;W$&$N$G$9$,!”$=$N$H$-$Oe(B ruby
e$BK\BN$rD>$9$N$,@5F;$@$7!“e(B
e$B$=$l$G$O4V$K9g$o$J$$$H$7$F$be(B rand/srand e$B$r:FDj5A$9$k$3$H$O2De(B
e$BG=$G$9$+$i!”$3$&$$$&@ZBX$(5!G=$O$$$i$J$$$s$8$c$J$$$G$7$g$&$+!#e(B

e$B@ZBX$($NJL0F$H$7$F$O!“%0%m!<%P%k$G$J$/!”%@%$%J%%C%/$K!“$H$+e(B
e$B%l%-%7%+%k$K!”$H$$$&$b$N$,9M$($i$l$^$9$,!"%@%$%J%
%C%/e(B
(e$B%9%l%Ce(B
e$B%IJQ?te(B) e$B$@$H%i%$%V%i%j4V$N4|BT$N>WFM$rKI$2$^$;$s$7!“%l%-%7%+e(B
e$B%k$H$$$&$N$O:#$Ne(B Ruby e$B$G$I$&<BAu$7$?$i$$$$$+$o$+$j$^$;$s!#@Ze(B
e$BBX$($K$D$$$F$Oe(B selector namespace e$B$H$+e(B classbox e$B$Ge(B
rand/srand e$B$r%l%-%7%+%k$K@ZBX$($i$l$k$3$H$r4|BT$9$k$”$?$j$,e(B
e$B$$$$$s$8$c$J$$$G$7$g$&$+!#e(B

Random::MT e$B$NCf$K$D$$$F$Oe(B upto e$B$H$$$&L>A0$,5$$K$J$j$^$9!#e(B
upto(10) e$B$J$i$d$C$Q$je(B 10 e$B$^$G$@$H;W$&$N$G$9$,!“$3$3$G$Oe(B 9
e$B$^e(B
e$B$G$J$N$GL>A0$,$h$m$7$/$J$$$H;W$$$^$9!#$9$0$K;W$$IU$/%a%=%C%Ie(B
e$BL>$H$7$F$Oe(B integer e$B$,$”$2$i$l$k$G$7$g$&$+!#e(B

e$B$"$H$ODI2C%a%=%C%I$r8!F$$9$k$He(B OpenSSL::Random e$B$de(B
SecureRandom e$B$+$ie(B random_bytes, hex, base64
e$B$,9M$($i$l$^$9$,!“e(B
e$B$=$&$$$&$N$,$”$k$He(B cookie e$B$K;H$$$d$9$/$J$k$N$G$`$7$m$J$$$[$&e(B
e$B$,$$$$$H$$$&5$$,$7$^$9!#e(B

e$B@>;3OB9-$G$9!#e(B

At Tue, 12 Jun 2007 01:11:31 +0900,
Tanaka A. wrote:

e$B$"$H$ODI2C%a%=%C%I$r8!F$$9$k$He(B OpenSSL::Random e$B$de(B

e$BDI2C%a%=%C%I$H$$$&$N$r8+$F;W$$=P$7$?$N$G$9$,!"e(B
rande$B$N0z?t$Ke(BRangee$B$bBP1~$7$F$[$7$$$G$9!#e(B
rand(1…10)e$B$Ge(B1e$B$+$ie(B10e$B$^$G$NHO0O$NMp?t$J$I!#e(B

In article [email protected],
“NAKAMURA, Hiroshi” [email protected] writes:

e$B$H$$$&$o$1$G:F$SBT$A!#e(B

e$B$H$j$"$($:e(B securerandom.rb e$B$K$7$F$_$^$7$?!#e(B

e$B$D$^$je(Boncee$B$8$c$J$$$8$c$s!“$I$&$7$Fe(B? e$B$H$$$&;XE&$@$H;W$$$^$9$,!”$3$N$h$&$Je(B
e$B>l9g$G$b!"8E$$e(Boncee$B$rL5@)8B$K<u$1IU$1$F$bLdBj$,5/$3$i$J$$$H$$$&$3$H$G$O$Je(B
e$B$/!“2DG=$J8B$je(Boncee$B$J$b$N$H$7$F07$&$Y$-$G$9!#e(Bnoncee$B$K%?%$%`%9%?%s%W$rKd$ae(B
e$B$F=pL>$7$?$j!”%5!<%PB&$G;~9o$H6&$K5-21$7$?$j!#e(B

once e$B$K2DG=$J8B$j6a$E$1$k$Y$-!“$H$$$&Ez$O!”$=$l$,@5F;$J$N$Oe(B
e$B$o$+$j$^$7$?!#e(BRFC 2617 e$B$N5-=R$b$=$&$$$&46$8$,$7$^$9!#e(B

e$B$H$$$&2sEz$G$“$C$F$^$9e(B? e$B85$NOC$HN%$l$9$.$J$N$G!”!V$=$&$$$&$3$H$,J9$-$?$$e(B
e$B$s$8$c$J$$$h!W$J5$$,$7$F$$$^$9!#e(B

e$BD>Y#$K=q$-$^$9!#e(B

securerandom.rb e$B$N@bL@$K!Ve(Bcookie e$B$de(B nonce
e$B$J$I$KE,$7$?!W$H=qe(B
e$B$-$^$7$?!#e(B

This library is a interface for secure random number generator which
is
suitable for HTTP cookies, nonces, etc.

e$B:G=i$N5?Ld$O!“e(Bnonce e$B$K$D$$$F$=$N@bL@$O$”$C$F$$$k$N$+!"$H$$$&e(B
e$B$3$H$G$9!#e(B

e$B<!$N5?Ld$Oe(B net/imap.rb e$B$Ne(B cnonce e$B@8@.$d!"e(B
webrick/httpauth/digestauth.rb e$B$Ne(B opaque e$B@8@.$re(B
securerandom.rb e$B$r;HMQ$9$k$h$&$JJQ99$rDs0F$9$k$N$OE,@Z$J$N$+!"e(B
e$B$H$$$&$3$H$G$9!#e(B

e$B$G!“2?EY$+%a!<%k$rFI$s$G9M$($F!“e(Bnonce e$B$K$O$”$s$^$j4X78$J$$$+e(B
e$B$J$!!”$H46$8$F$$$^$9!#e(B

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Kazuhiro NISHIYAMA wrote:

e$BDI2C%a%=%C%I$H$$$&$N$r8+$F;W$$=P$7$?$N$G$9$,!"e(B
rande$B$N0z?t$Ke(BRangee$B$bBP1~$7$F$[$7$$$G$9!#e(B
rand(1…10)e$B$Ge(B1e$B$+$ie(B10e$B$^$G$NHO0O$NMp?t$J$I!#e(B

e$B$I$s$J>lLL$GJXMx$G$9e(B? rand(Range.new(1.1,
3.1))e$B$H$+$G2r<a$,Yf$a$=$&$J$Ne(B
e$B$G!"%Q%9$7$?$$$H$3$m!#!Je(B2e$B$,e(B3e$B$h$jB?$/JV$j$=$&!Ke(B

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.5 (Cygwin)

iQEVAwUBRm41jR9L2jg5EEGlAQLzXAgAkbwAM03vGxBAV9E2GKd1wswHEP/YpvJg
WqPb0027qFqRT6DbUCHqj3/XZybN5l7RhTQqmD56VAVx0nQM1oOAOoWBA5/adlbO
VvESKzO5WYtlWuKGY1zzre2s9slX7uJdhp52TzZsvUuRWIS3pjcAU2nv5tXwkn8z
+ZY3fV6T5QSwmvFTfR4x/LrhuFUXd+Kf3ZsviE/GDonEJLkzieTqCIAIKVer9Jeh
eQUcvSz4r2qcuYxQX1U1PSzvrIAgt2UEzlSf/U+sgpnYrOHEBFYNpRQ82a1Ouhiv
sKFQ+bXX6kt464hTRalsjYyunPaQgFf12J9NqMoTUpXFsSplOZXnGw==
=wZvY
-----END PGP SIGNATURE-----

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Tanaka A. wrote:

e$B<BAu$O$"$H$G$I$&$H$G$b$J$k$N$G!"e(Bakre$B$5$s$K%$%s%?!<%U%’!<%9$r7h$a$F$$$?$@e(B
e$B$-$?$$$H$3$m!#;W$o$:e(Brande$B$+$i0\9T$7$?$/$J$k$h$&$JE[$r$*4j$$$7$^$9!#e(B

rand e$B$Ne(B 4e$BJ8;z$H$$$&C;$5$K$O>!$F$J$$$C$Fe(B…

e$B$H8@$$$D$D$"$j$,$H$&$4$6$$$^$9!#e(B

e$B%/%i%99=@.$K$D$$$Fe(B:

e$B$^$:5$$,$D$/$N$Oe(B Random e$B$8$c$J$/$Fe(B Random::MT e$B$H$$$&$3$H$G$9!#e(B
e$B$3$l$HJL$N%G%6%$%s$H$7$F$O!“e(BRandom e$B<+BN$re(B Mersenne Twister
e$B$N%/%i%9$K$9$k$H$$$&$b$N$,$”$k$G$7$g$&!#e(B

e$B$*$=$i$/$^$D$b$H$5$s$O8e<T$r9M$($F$$$k$s$8$c$J$$$G$9$+$M!#e(B

e$BF146$G$9!#0J2<$N@bL@$K$bF10U!#FbIt<BAu$O$H$b$+$/!"e(BRandom::MTe$B$O30$K=P$5$Je(B
e$B$$J}8~$G$7$g$&$M!#e(B

e$B%a%=%C%IL>$K$D$$$Fe(B:

Random::MT e$B$NCf$K$D$$$F$Oe(B upto e$B$H$$$&L>A0$,5$$K$J$j$^$9!#e(B
upto(10) e$B$J$i$d$C$Q$je(B 10 e$B$^$G$@$H;W$&$N$G$9$,!"$3$3$G$Oe(B 9 e$B$^e(B
e$B$G$J$N$GL>A0$,$h$m$7$/$J$$$H;W$$$^$9!#$9$0$K;W$$IU$/%a%=%C%Ie(B
e$BL>$H$7$F$Oe(B integer e$B$,$"$2$i$l$k$G$7$g$&$+!#e(B

e$BF146!#e(BJavae$B$G$Oe(BnextBooleane$B!"e(BnextBytese$B!"e(BnextFloate$B!"e(BnextGaussiane$B!"e(BnextInte$B!“e(B
nextLonge$B$,$”$j$^$9!#!Ve(Bnexte$B!W$H$$$&$N$,e(Bpseudoe$B$J46$8$rI=$7$F$^$9$,!"e(B
SecureRandome$B$K$bF1$8%$%s%?!<%U%’!<%9$r;}$?$;$?$$$H;W$C$F$$$k$N$G!"ITMW$Ge(B
e$B$7$g$&!#$^$?!"e(Bbooleane$B!“e(Bgaussiane$B$OMxMQ<T$$$J$$!#e(BLonge$B$OE,9g$;$:!”$H$$$&$3e(B
e$B$H$G!"e(B

Random#integer(max)
Ramdom#bytes(size)
Random#float

e$B$/$i$$e(B? e$BB>$K8=9Te(BAPIe$B$+$i$N0\9T@h$Ke(B;

Random#rand(max = 0)
Random#srand(seed = nil)
Random#seed=(seed = nil) # srande$B$HF1$8e(B
Random.rand(max = 0) #
e$B8=9Te(Bsrand()e$B$HF1Ey$N<o$r85$K$7$?e(BRandome$B%*%V%8%’%/%He(B
# e$B$Ne(BRandom#rand(max)e$B$r8F$V!#e(B
rand(max = nil) # => Random.rand

floate$B$OITMW$+$J$!!#e(Brand(0)e$B$HF1$8;EMM$N$D$b$j$G$9$,!"e(Brand()e$B$G$$$$$8$c$s!"e(B
e$B$H$$$&5$$,$9$k!#e(B

srand()e$B$OGQ;_$H$+$^$:$$$G$9$+$Me(B?
e$B$;$a$F!"e(Bsrand()e$B$O0z?t$r<h$i$J$$$h$&$K$7e(B
e$B$?$$!#e(B

e$B$"$H$ODI2C%a%=%C%I$r8!F$$9$k$He(B OpenSSL::Random e$B$de(B
SecureRandom e$B$+$ie(B random_bytes, hex, base64 e$B$,9M$($i$l$^$9$,!“e(B
e$B$=$&$$$&$N$,$”$k$He(B cookie e$B$K;H$$$d$9$/$J$k$N$G$`$7$m$J$$$[$&e(B
e$B$,$$$$$H$$$&5$$,$7$^$9!#e(B

e$B$3$A$i$NJV?.$OJ]N1!#e(B

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.5 (Cygwin)

iQEVAwUBRm4zcB9L2jg5EEGlAQJGTQgAnuTY/+GQYvwZrMOwr81CrOd/1ypufV3H
5Bdmrmot1H5yBr6XeK+uPl0/mwWLdNMbOCZ0cI6eXcNKX2Caa4ElTSArYhuB2JPs
TysEK8xuVNC9EnpP951ehu9OqXK/aXyO4g6GwxwPp0ZRyVsHWmC71KV/2SIYBpJw
mZEg0wjb8OmLk3Q/QnGTV07FQ8Npt19xQlzpPfWPoF7F2h8JiV1TnPfJu1+3Su5i
NkHscZqn1/8AbtXcHcfnRn/5NkLUcMIKGouX+Dzk2QvdMunneLK3W1jQn5dWf0OF
7ZMMovptsxftNn+baoyvo8eC6wJG33PNt8V8nbCYscI9CdM5vPMVog==
=hLYk
-----END PGP SIGNATURE-----