<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: Computer-powered lottery tickets : The Engineyard programming contest</title>
	<atom:link href="http://projectgus.com/2009/07/computer-powered-lottery-tickets-the-engineyard-programming-contest/feed/" rel="self" type="application/rss+xml" />
	<link>http://projectgus.com/2009/07/computer-powered-lottery-tickets-the-engineyard-programming-contest/</link>
	<description>Might even work.</description>
	<lastBuildDate>Sat, 04 Feb 2012 06:01:24 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
	<item>
		<title>By: Dave</title>
		<link>http://projectgus.com/2009/07/computer-powered-lottery-tickets-the-engineyard-programming-contest/comment-page-1/#comment-15</link>
		<dc:creator>Dave</dc:creator>
		<pubDate>Mon, 20 Jul 2009 04:04:48 +0000</pubDate>
		<guid isPermaLink="false">http://projectgus.com/?p=38#comment-15</guid>
		<description>That CUDA program is impressive.. 180 M tests per second. That makes even a fast CPU at only 4M per second rather trivial. And you can use multiple video cards at once!</description>
		<content:encoded><![CDATA[<p>That CUDA program is impressive.. 180 M tests per second. That makes even a fast CPU at only 4M per second rather trivial. And you can use multiple video cards at once!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: angus</title>
		<link>http://projectgus.com/2009/07/computer-powered-lottery-tickets-the-engineyard-programming-contest/comment-page-1/#comment-14</link>
		<dc:creator>angus</dc:creator>
		<pubDate>Sun, 19 Jul 2009 23:47:38 +0000</pubDate>
		<guid isPermaLink="false">http://projectgus.com/?p=38#comment-14</guid>
		<description>Thanks again Ivan.

Due to real life (and spending the last 3 days at the beach), I haven&#039;t had time to do anything on this and probably won&#039;t, but there&#039;s a thread in the Nvidia forums with an interesting CUDA implementation:

http://forums.nvidia.com/index.php?showtopic=102349

I also turned up a CUDA kernel for SHA-1 as part of the Pyrit WPA-cracking project, which looks like it could be pretty easily shoehorned into an existing C-based solution, in place of OpenSSL/Nettle. Not sure how it would perform, though.

http://code.google.com/p/pyrit/source/browse/trunk/cpyrit/</description>
		<content:encoded><![CDATA[<p>Thanks again Ivan.</p>
<p>Due to real life (and spending the last 3 days at the beach), I haven&#8217;t had time to do anything on this and probably won&#8217;t, but there&#8217;s a thread in the Nvidia forums with an interesting CUDA implementation:</p>
<p><a href="http://forums.nvidia.com/index.php?showtopic=102349" rel="nofollow">http://forums.nvidia.com/index.php?showtopic=102349</a></p>
<p>I also turned up a CUDA kernel for SHA-1 as part of the Pyrit WPA-cracking project, which looks like it could be pretty easily shoehorned into an existing C-based solution, in place of OpenSSL/Nettle. Not sure how it would perform, though.</p>
<p><a href="http://code.google.com/p/pyrit/source/browse/trunk/cpyrit/" rel="nofollow">http://code.google.com/p/pyrit/source/browse/trunk/cpyrit/</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Ivan</title>
		<link>http://projectgus.com/2009/07/computer-powered-lottery-tickets-the-engineyard-programming-contest/comment-page-1/#comment-13</link>
		<dc:creator>Ivan</dc:creator>
		<pubDate>Sun, 19 Jul 2009 10:24:16 +0000</pubDate>
		<guid isPermaLink="false">http://projectgus.com/?p=38#comment-13</guid>
		<description>Well, I don&#039;t know much about Nettle implementation of SHA1 but simple usage of SSE2 won&#039;t give you 10x speed-up. You&#039;ll need to remove all unnecessary code (at least strip off little endian  big endian conversions) and then try to use iCore pipelines to maximum (which is 3 SSE2 instructions per cycle). 2nd thing isn&#039;t that easy to archive ;).</description>
		<content:encoded><![CDATA[<p>Well, I don&#8217;t know much about Nettle implementation of SHA1 but simple usage of SSE2 won&#8217;t give you 10x speed-up. You&#8217;ll need to remove all unnecessary code (at least strip off little endian  big endian conversions) and then try to use iCore pipelines to maximum (which is 3 SSE2 instructions per cycle). 2nd thing isn&#8217;t that easy to archive <img src='http://projectgus.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> .</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: angus</title>
		<link>http://projectgus.com/2009/07/computer-powered-lottery-tickets-the-engineyard-programming-contest/comment-page-1/#comment-12</link>
		<dc:creator>angus</dc:creator>
		<pubDate>Sun, 19 Jul 2009 09:22:34 +0000</pubDate>
		<guid isPermaLink="false">http://projectgus.com/?p=38#comment-12</guid>
		<description>I just looked at your website, Ivan. Very impressive. :-)</description>
		<content:encoded><![CDATA[<p>I just looked at your website, Ivan. Very impressive. <img src='http://projectgus.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>By: angus</title>
		<link>http://projectgus.com/2009/07/computer-powered-lottery-tickets-the-engineyard-programming-contest/comment-page-1/#comment-11</link>
		<dc:creator>angus</dc:creator>
		<pubDate>Sun, 19 Jul 2009 09:18:54 +0000</pubDate>
		<guid isPermaLink="false">http://projectgus.com/?p=38#comment-11</guid>
		<description>Thanks for the post, Ivan. I&#039;m kind quite embarassed I didn&#039;t think of SIMD optimisations off the top of my head.

I&#039;m surprised that it seems like the Nettle implementation of SHA1 is a full ten times slower than one using SSE2. When I get home I&#039;ll swap in one of the publicly available SSE2-enabled implementations and compare.</description>
		<content:encoded><![CDATA[<p>Thanks for the post, Ivan. I&#8217;m kind quite embarassed I didn&#8217;t think of SIMD optimisations off the top of my head.</p>
<p>I&#8217;m surprised that it seems like the Nettle implementation of SHA1 is a full ten times slower than one using SSE2. When I get home I&#8217;ll swap in one of the publicly available SSE2-enabled implementations and compare.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Ivan</title>
		<link>http://projectgus.com/2009/07/computer-powered-lottery-tickets-the-engineyard-programming-contest/comment-page-1/#comment-10</link>
		<dc:creator>Ivan</dc:creator>
		<pubDate>Sun, 19 Jul 2009 06:44:11 +0000</pubDate>
		<guid isPermaLink="false">http://projectgus.com/?p=38#comment-10</guid>
		<description>1. You don&#039;t need 2^160 SHA1&#039;s to find collision. 2^80 is enough (see &quot;birthday paradox&quot;).
2. Your timings for SHA1_Transform really far from perfect. Optimized version requires only about 165 machine cycles to perform one transform on Intel Core (more correctly, ~660 cycles to process 4 hashes simultaneously with SSE2). So 2.2 dualcore cpu able to do about 26.7M hashes/sec.
3. Previous thing also doesn&#039;t really matter as hashing is ideal thing to do with modern GPUs. ATI RV740+ and nVidia G80+ easily beats CPUs in hashing speed. For example, 4870x2 able to compute ~720M hashes/s, GTX295 ~415M/s.
4. But all above things again doesn&#039;t matters as it&#039;s still impossible to find collision in real time. However having several modern GPUs can increase your chances to win.</description>
		<content:encoded><![CDATA[<p>1. You don&#8217;t need 2^160 SHA1&#8242;s to find collision. 2^80 is enough (see &#8220;birthday paradox&#8221;).<br />
2. Your timings for SHA1_Transform really far from perfect. Optimized version requires only about 165 machine cycles to perform one transform on Intel Core (more correctly, ~660 cycles to process 4 hashes simultaneously with SSE2). So 2.2 dualcore cpu able to do about 26.7M hashes/sec.<br />
3. Previous thing also doesn&#8217;t really matter as hashing is ideal thing to do with modern GPUs. ATI RV740+ and nVidia G80+ easily beats CPUs in hashing speed. For example, 4870&#215;2 able to compute ~720M hashes/s, GTX295 ~415M/s.<br />
4. But all above things again doesn&#8217;t matters as it&#8217;s still impossible to find collision in real time. However having several modern GPUs can increase your chances to win.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: angus</title>
		<link>http://projectgus.com/2009/07/computer-powered-lottery-tickets-the-engineyard-programming-contest/comment-page-1/#comment-9</link>
		<dc:creator>angus</dc:creator>
		<pubDate>Sun, 19 Jul 2009 05:39:01 +0000</pubDate>
		<guid isPermaLink="false">http://projectgus.com/?p=38#comment-9</guid>
		<description>XOR the two values first.</description>
		<content:encoded><![CDATA[<p>XOR the two values first.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jared</title>
		<link>http://projectgus.com/2009/07/computer-powered-lottery-tickets-the-engineyard-programming-contest/comment-page-1/#comment-8</link>
		<dc:creator>Jared</dc:creator>
		<pubDate>Sun, 19 Jul 2009 04:04:40 +0000</pubDate>
		<guid isPermaLink="false">http://projectgus.com/?p=38#comment-8</guid>
		<description>I don&#039;t understand how __builtin_popcount can be used to compute the hamming distance.  From what I can tell, that function just counts the number of 1 bits in an integer. However doesn&#039;t the position of the 1 bits also matter for the hamming distance?  If one byte is 10000000 and another is 00000001 then both bytes have a single &quot;1&quot; bit yet shouldn&#039;t the hamming distance be 2 since 2 bits are different (the bits in the first and last positions)?</description>
		<content:encoded><![CDATA[<p>I don&#8217;t understand how __builtin_popcount can be used to compute the hamming distance.  From what I can tell, that function just counts the number of 1 bits in an integer. However doesn&#8217;t the position of the 1 bits also matter for the hamming distance?  If one byte is 10000000 and another is 00000001 then both bytes have a single &#8220;1&#8243; bit yet shouldn&#8217;t the hamming distance be 2 since 2 bits are different (the bits in the first and last positions)?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Charlie</title>
		<link>http://projectgus.com/2009/07/computer-powered-lottery-tickets-the-engineyard-programming-contest/comment-page-1/#comment-7</link>
		<dc:creator>Charlie</dc:creator>
		<pubDate>Fri, 17 Jul 2009 16:29:15 +0000</pubDate>
		<guid isPermaLink="false">http://projectgus.com/?p=38#comment-7</guid>
		<description>That&#039;s not the reason you don&#039;t buy 10 lottery tickets though.  The reason buying of them is bad is because you have to pay for each ticket, and the expected return is too low.  Your odds are indeed still ten times better than before, but monetarily it&#039;s just not worth it.

I think it&#039;s foolish to say that anyone with one machine will have the same change as someone with a botnet.  It&#039;s possible for then to win, but their odds will literally be 100&#039;s of times lower even if they have an extremely fast program.

Also, unlike the lottery there is a garanteed winner, which changes things significantly.  The goal isn&#039;t to find the ONE collision, but the closest.</description>
		<content:encoded><![CDATA[<p>That&#8217;s not the reason you don&#8217;t buy 10 lottery tickets though.  The reason buying of them is bad is because you have to pay for each ticket, and the expected return is too low.  Your odds are indeed still ten times better than before, but monetarily it&#8217;s just not worth it.</p>
<p>I think it&#8217;s foolish to say that anyone with one machine will have the same change as someone with a botnet.  It&#8217;s possible for then to win, but their odds will literally be 100&#8242;s of times lower even if they have an extremely fast program.</p>
<p>Also, unlike the lottery there is a garanteed winner, which changes things significantly.  The goal isn&#8217;t to find the ONE collision, but the closest.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jon</title>
		<link>http://projectgus.com/2009/07/computer-powered-lottery-tickets-the-engineyard-programming-contest/comment-page-1/#comment-6</link>
		<dc:creator>Jon</dc:creator>
		<pubDate>Fri, 17 Jul 2009 11:18:13 +0000</pubDate>
		<guid isPermaLink="false">http://projectgus.com/?p=38#comment-6</guid>
		<description>I think a better analogy is if there was a raffle with 10 billion tickets, and I had one ticket and you had two.  Are the odds of one person much higher than the other?  It&#039;s the same reason that buying 10 lottery tickets isn&#039;t any smarter than buying 1.</description>
		<content:encoded><![CDATA[<p>I think a better analogy is if there was a raffle with 10 billion tickets, and I had one ticket and you had two.  Are the odds of one person much higher than the other?  It&#8217;s the same reason that buying 10 lottery tickets isn&#8217;t any smarter than buying 1.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

