Ok, here are the test results (in seconds). Tested on my iPhone 3GS.<div>PBKDF2 with 30.000 iterations. Each run using the same salt, password and key length.<br><div><br></div><div><p style="margin:0px 0px 0px 0px;font:11.0px Menlo">
</p><p style="font-weight:bold;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;font:normal normal normal 11px/normal Menlo"><b>Botan::SHA_160 19.1</b></p>
<p style="font-weight:bold;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;font:normal normal normal 11px/normal Menlo"><b>Botan::SHA_256 12.1</b></p>
<p style="font-weight:bold;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;font:normal normal normal 11px/normal Menlo"><b>Botan::SHA_512 12.9</b></p>
<p style="font-weight:bold;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;font:normal normal normal 11px/normal Menlo;min-height:13px"><b></b><br></p>
<p style="font-weight:bold;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;font:normal normal normal 11px/normal Menlo"><b>FastHashSHA1   0.93</b></p>
<p style="font-weight:bold;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;font:normal normal normal 11px/normal Menlo"><b>FastHashSHA256 0.68</b></p>
<p style="font-weight:bold;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;font:normal normal normal 11px/normal Menlo"><b>FastHashSHA512 1.71</b></p><div style="font-weight:bold"><b><br></b></div><div>
<font class="Apple-style-span" face="arial">These numbers are similar to the tests I did last month. Huge difference.</font></div><div><font class="Apple-style-span" face="arial"><br></font></div><div><font class="Apple-style-span" face="arial">Just before sending this message I decided to check the compiler optimization options during debugging. Turns out that Xcode is configured (by default) to do no code optimization at all during debugging..........</font></div>
<div><font class="Apple-style-span" face="arial">After changing that I redid the tests above to find these timings:</font></div><div><font class="Apple-style-span" face="arial"><br></font></div><div><font class="Apple-style-span" face="arial"><p style="margin:0px 0px 0px 0px;font:11.0px Menlo">
<b>Botan::SHA_160 2.12</b></p>
<p style="margin:0px 0px 0px 0px;font:11.0px Menlo"><b>Botan::SHA_256 1.08</b></p>
<p style="margin:0px 0px 0px 0px;font:11.0px Menlo"><b>Botan::SHA_512 1.58</b></p>
<p style="margin:0px 0px 0px 0px;font:11.0px Menlo;min-height:13.0px"><b></b><br></p>
<p style="margin:0px 0px 0px 0px;font:11.0px Menlo"><b>FastHashSHA1   0.79</b></p>
<p style="margin:0px 0px 0px 0px;font:11.0px Menlo"><b>FastHashSHA256 0.62</b></p>
<p style="margin:0px 0px 0px 0px;font:11.0px Menlo"><b>FastHashSHA512 1.66</b></p><div><b><br></b></div></font><div><font class="Apple-style-span" face="arial">For SHA-1 there is still a substantial difference, although more in line with your expectations (2-3x).</font></div>
<div><font class="Apple-style-span" face="arial">For SHA-2 the results are comparable.</font></div></div><div><font class="Apple-style-span" face="arial"><br></font></div><div><span class="Apple-style-span" style="font-family:arial;font-size:small">Richard.</span></div>
<div><span class="Apple-style-span" style="font-family:arial;font-size:small"><br></span></div><p></p><div class="gmail_quote">2012/7/29 Jack Lloyd <span dir="ltr"><<a href="mailto:lloyd@randombit.net" target="_blank">lloyd@randombit.net</a>></span><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br>
According to<br>
<a href="http://theiphonewiki.com/wiki/index.php?title=S5L8720_%28Hardware_-_SHA1%29" target="_blank">http://theiphonewiki.com/wiki/index.php?title=S5L8720_%28Hardware_-_SHA1%29</a><br>
there is at least SHA-1 hardware in some(?) iPhones, which presumably<br>
is being used by the libraries if it is available. Did you see a<br>
similar speed up for SHA-2?<br>
<span class="HOEnZb"><font color="#888888"><br>
-Jack<br>
</font></span><div class="HOEnZb"><div class="h5"><br>
On Sun, Jul 29, 2012 at 08:30:56PM +0200, Richard Huveneers wrote:<br>
> The 10x is the correct order of magnitude, the key derivation for some disk<br>
> images reduced from around 90 to 8 seconds (measured by hand) on my iPhone<br>
> 3GS. It could well have hardware support for this, although it's a rather<br>
> old device..<br>
><br>
> Richard.<br>
><br>
> 2012/7/29 Jack Lloyd <<a href="mailto:lloyd@randombit.net">lloyd@randombit.net</a>><br>
><br>
> ><br>
> > Interesting, the iOS library hashes are really _10x_ the performance<br>
> > of the C++ code in botan? I'm definitely intrigued by that, as, at<br>
> > least for the ARM I have (an ARM926EJ), OpenSSL's asm SHA-1 and<br>
> > SHA-256 are slower than Botan's C++ (12% and 40%, resp), so I figured<br>
> > I was doing OK even lacking asm!<br>
> ><br>
> > Is it possible the iPhone has physical SHA hardware? I could believe<br>
> > careful asm (and NEON support, which I know the Cortex has but which<br>
> > no ARM I have access to does) might provide even 2-3x speedup but 10x<br>
> > is pretty crazy and I'm really wondering what I'm missing. If it<br>
> > really is giving that speedup, a CommonCrypto engine (or some ARM asm<br>
> > at least, if this is easy to replicate) would make a lot of sense.<br>
> ><br>
> > -Jack<br>
> ><br>
> > On Sun, Jul 29, 2012 at 08:08:24PM +0200, Richard Huveneers wrote:<br>
> > > Ok, here goes..<br>
> > ><br>
> > > The object names made sense when I was doing performance tests, should<br>
> > > probably be renamed to reflect the iOS/Mac environment.<br>
> > ><br>
> > > Regards, Richard.<br>
> > ><br>
> > > 2012/7/29 Timothy Prepscius <<a href="mailto:timprepscius@gmail.com">timprepscius@gmail.com</a>><br>
> > ><br>
> > > > I'm interested.<br>
> > > ><br>
> > > > On Jul 29, 2012, at 11:57 AM, Richard Huveneers wrote:<br>
> > > ><br>
> > > > ve made a few objects wrapping iOS's SHA functions into subclasses<br>
> > > > of Botan::HashFunction. Since Botan does not have ARM assembly<br>
> > versions,<br>
> > > > these are much (10x) faster than the default SHA implementation<br>
> > provided by<br>
> > > > Botan. If anybody is interested, I'll gladly provide a zip file<br>
> > containing<br>
> > > > the sources.<br>
> > > ><br>
> > > ><br>
> > > ><br>
> > > > _______________________________________________<br>
> > > > botan-devel mailing list<br>
> > > > <a href="mailto:botan-devel@randombit.net">botan-devel@randombit.net</a><br>
> > > > <a href="http://lists.randombit.net/mailman/listinfo/botan-devel" target="_blank">http://lists.randombit.net/mailman/listinfo/botan-devel</a><br>
> > > ><br>
> > > ><br>
> ><br>
> ><br>
> > > _______________________________________________<br>
> > > botan-devel mailing list<br>
> > > <a href="mailto:botan-devel@randombit.net">botan-devel@randombit.net</a><br>
> > > <a href="http://lists.randombit.net/mailman/listinfo/botan-devel" target="_blank">http://lists.randombit.net/mailman/listinfo/botan-devel</a><br>
> ><br>
> > _______________________________________________<br>
> > botan-devel mailing list<br>
> > <a href="mailto:botan-devel@randombit.net">botan-devel@randombit.net</a><br>
> > <a href="http://lists.randombit.net/mailman/listinfo/botan-devel" target="_blank">http://lists.randombit.net/mailman/listinfo/botan-devel</a><br>
> ><br>
<br>
> _______________________________________________<br>
> botan-devel mailing list<br>
> <a href="mailto:botan-devel@randombit.net">botan-devel@randombit.net</a><br>
> <a href="http://lists.randombit.net/mailman/listinfo/botan-devel" target="_blank">http://lists.randombit.net/mailman/listinfo/botan-devel</a><br>
<br>
_______________________________________________<br>
botan-devel mailing list<br>
<a href="mailto:botan-devel@randombit.net">botan-devel@randombit.net</a><br>
<a href="http://lists.randombit.net/mailman/listinfo/botan-devel" target="_blank">http://lists.randombit.net/mailman/listinfo/botan-devel</a><br>
</div></div></blockquote></div><br></div></div>