<?xml version="1.0" encoding="utf-8"?><!-- generator="b2evolution/3.3.1" -->
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:admin="http://webns.net/mvcb/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>yohgaki's blog - 乱数生成器の取扱い - PHPとPython の最近のコメント</title>
		<link>http://blog.ohgaki.net/?disp=comments</link>
		<atom:link rel="self" type="application/rss+xml" href="http://blog.ohgaki.net/?tempskin=_rss2&#38;disp=comments&#38;p=1021" />
		<description></description>
		<language>ja-JP</language>
		<docs>http://backend.userland.com/rss</docs>
		<admin:generatorAgent rdf:resource="http://b2evolution.net/?v=3.3.1"/>
		<ttl>60</ttl>
				<item>
			<title>Yasuo Ohgaki [メンバー] in response to: 乱数生成器の取扱い - PHPとPython</title>
			<pubDate>Sun, 28 Sep 2008 04:37:25 +0000</pubDate>
			<dc:creator>Yasuo Ohgaki [メンバー]</dc:creator>
			<guid isPermaLink="false">c15453@http://blog.ohgaki.net/</guid>
			<description>&gt; MT に限らず、非暗号論的乱数はセキュリティに関わる部分で用いないほうが良いですよね。&lt;br /&gt;
&lt;br /&gt;
その通りですが現実的にはランダムパスワードの生成などに疑似乱数が使われている事が多いと思います。&lt;br /&gt;
&lt;br /&gt;
個人的には、ランダムパスワードの生成には/dev/urandomから200バイトほど読み取り、SHA1などでハッシュと取り、その一部を切り出す方法が好みです。&lt;br /&gt;</description>
			<content:encoded><![CDATA[> MT に限らず、非暗号論的乱数はセキュリティに関わる部分で用いないほうが良いですよね。<br />
<br />
その通りですが現実的にはランダムパスワードの生成などに疑似乱数が使われている事が多いと思います。<br />
<br />
個人的には、ランダムパスワードの生成には/dev/urandomから200バイトほど読み取り、SHA1などでハッシュと取り、その一部を切り出す方法が好みです。<br />]]></content:encoded>
			<link>http://blog.ohgaki.net/php-python#c15453</link>
		</item>
				<item>
			<title>mrkn [訪問者] in response to: 乱数生成器の取扱い - PHPとPython</title>
			<pubDate>Fri, 26 Sep 2008 09:03:12 +0000</pubDate>
			<dc:creator>mrkn [訪問者]</dc:creator>
			<guid isPermaLink="false">c15452@http://blog.ohgaki.net/</guid>
			<description>MT に限らず、非暗号論的乱数はセキュリティに関わる部分で用いないほうが良いですよね。&lt;br /&gt;</description>
			<content:encoded><![CDATA[MT に限らず、非暗号論的乱数はセキュリティに関わる部分で用いないほうが良いですよね。<br />]]></content:encoded>
			<link>http://blog.ohgaki.net/php-python#c15452</link>
		</item>
				<item>
			<title>Yasuo Ohgaki [メンバー] in response to: 乱数生成器の取扱い - PHPとPython</title>
			<pubDate>Thu, 25 Sep 2008 06:26:46 +0000</pubDate>
			<dc:creator>Yasuo Ohgaki [メンバー]</dc:creator>
			<guid isPermaLink="false">c15451@http://blog.ohgaki.net/</guid>
			<description>&gt; mcrypt_create_iv() はどうですか?&lt;br /&gt;
&lt;br /&gt;
プロトタイプは&lt;br /&gt;
&lt;br /&gt;
mcrypt_craete_iv(int size[, int source])&lt;br /&gt;
&lt;br /&gt;
で、sourceには/dev/random(MCRYPT_DEV_RANDOM), /dev/urandom(MCRIPYT_DEV_URANDOM)を利用できますが、ソースを指定しない(MCRYPT_RANDOM)とphp_rand(libcのrandのラッパー。初期化は自動的に行われる）が利用されます。&lt;br /&gt;
&lt;br /&gt;
sizeで指定した分だけのデータをrandom/urandomから読み出します。MCRYPT_RANDOMの場合、ループになっていてsizeの回数だけphp_randを呼んでInitilization Vectorを作成します。&lt;br /&gt;
&lt;br /&gt;
MCRYPT_RANDの場合、mt_randの方を呼んだ方が良いと思いますが、初期化の方法としては妥当と言えると思います。</description>
			<content:encoded><![CDATA[> mcrypt_create_iv() はどうですか?<br />
<br />
プロトタイプは<br />
<br />
mcrypt_craete_iv(int size[, int source])<br />
<br />
で、sourceには/dev/random(MCRYPT_DEV_RANDOM), /dev/urandom(MCRIPYT_DEV_URANDOM)を利用できますが、ソースを指定しない(MCRYPT_RANDOM)とphp_rand(libcのrandのラッパー。初期化は自動的に行われる）が利用されます。<br />
<br />
sizeで指定した分だけのデータをrandom/urandomから読み出します。MCRYPT_RANDOMの場合、ループになっていてsizeの回数だけphp_randを呼んでInitilization Vectorを作成します。<br />
<br />
MCRYPT_RANDの場合、mt_randの方を呼んだ方が良いと思いますが、初期化の方法としては妥当と言えると思います。]]></content:encoded>
			<link>http://blog.ohgaki.net/php-python#c15451</link>
		</item>
				<item>
			<title>sanaki [訪問者] in response to: 乱数生成器の取扱い - PHPとPython</title>
			<pubDate>Thu, 25 Sep 2008 01:12:03 +0000</pubDate>
			<dc:creator>sanaki [訪問者]</dc:creator>
			<guid isPermaLink="false">c15450@http://blog.ohgaki.net/</guid>
			<description>mcrypt_create_iv() はどうですか?</description>
			<content:encoded><![CDATA[mcrypt_create_iv() はどうですか?]]></content:encoded>
			<link>http://blog.ohgaki.net/php-python#c15450</link>
		</item>
				<item>
			<title>Yasuo Ohgaki [メンバー] in response to: 乱数生成器の取扱い - PHPとPython</title>
			<pubDate>Wed, 24 Sep 2008 03:38:14 +0000</pubDate>
			<dc:creator>Yasuo Ohgaki [メンバー]</dc:creator>
			<guid isPermaLink="false">c15449@http://blog.ohgaki.net/</guid>
			<description>mt_srandのPHPマニュアルに間違いがあります。&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote&gt;Since 5.2.1  	 The Mersenne Twister implementation in PHP now uses a new seeding algorithm by Richard Wagner. Identical seeds no longer produce the same sequence of values they did in previous versions. This behavior is not expected to change again, but it is considered unsafe to rely upon it nonetheless. &lt;/blockquote&gt;&lt;br /&gt;
&lt;br /&gt;
php -r &quot;mt_srand(1234); echo mt_rand(0, 100000);&quot;&lt;br /&gt;
&lt;br /&gt;
等とすれば分かりますが、同じ乱数が生成されます。この記述はPHP 4.2.0以降のPHPでは時間とプロセスIDを利用したphp_combind_lcg関数（PHPの内部関数）によって自動的に初期化される仕様と混同(?)している可能性があります。&lt;br /&gt;</description>
			<content:encoded><![CDATA[mt_srandのPHPマニュアルに間違いがあります。<br />
<br />
<blockquote>Since 5.2.1  	 The Mersenne Twister implementation in PHP now uses a new seeding algorithm by Richard Wagner. Identical seeds no longer produce the same sequence of values they did in previous versions. This behavior is not expected to change again, but it is considered unsafe to rely upon it nonetheless. </blockquote><br />
<br />
php -r "mt_srand(1234); echo mt_rand(0, 100000);"<br />
<br />
等とすれば分かりますが、同じ乱数が生成されます。この記述はPHP 4.2.0以降のPHPでは時間とプロセスIDを利用したphp_combind_lcg関数（PHPの内部関数）によって自動的に初期化される仕様と混同(?)している可能性があります。<br />]]></content:encoded>
			<link>http://blog.ohgaki.net/php-python#c15449</link>
		</item>
				<item>
			<title>Yasuo Ohgaki [メンバー] in response to: 乱数生成器の取扱い - PHPとPython</title>
			<pubDate>Wed, 24 Sep 2008 03:22:28 +0000</pubDate>
			<dc:creator>Yasuo Ohgaki [メンバー]</dc:creator>
			<guid isPermaLink="false">c15448@http://blog.ohgaki.net/</guid>
			<description>Stefan氏が作っている守護神モジュールではビット幅を64bitに拡張したり、srand/mt_srandを利用せず強制的に自動的に乱数生成器を初期化するようになっているようです。&lt;br /&gt;
&lt;br /&gt;
64bitに拡張する事によりルックアップテーブルの作成はかなり困難になりますが、擬似乱数をそのまま出力してしまう設計は行わない方が良いでしょう。&lt;br /&gt;</description>
			<content:encoded><![CDATA[Stefan氏が作っている守護神モジュールではビット幅を64bitに拡張したり、srand/mt_srandを利用せず強制的に自動的に乱数生成器を初期化するようになっているようです。<br />
<br />
64bitに拡張する事によりルックアップテーブルの作成はかなり困難になりますが、擬似乱数をそのまま出力してしまう設計は行わない方が良いでしょう。<br />]]></content:encoded>
			<link>http://blog.ohgaki.net/php-python#c15448</link>
		</item>
			</channel>
</rss>
