<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/'><id>tag:blogger.com,1999:blog-1973750947775262558.post6176194572139828121..comments</id><updated>2011-06-13T06:39:30.336-04:00</updated><category term='coldfusion'/><category term='BOF'/><category term='server configuration'/><category term='debugging'/><category term='jenkins'/><category term='SQL Server'/><category term='jira'/><category term='CFUnited'/><category term='Windows'/><category term='Security'/><category term='twicf'/><category term='timesavers'/><category term='MongoDB'/><category term='MAX'/><category term='user group'/><category term='TDD'/><category term='bcrypt'/><category term='BDD'/><category term='start'/><category term='CFUG'/><category term='RIAUnleashed'/><category term='ORM'/><category term='eclipse plugin'/><category term='Under  the Hood'/><category term='MXUnit Videos'/><category term='shortcuts'/><category term='Code Dojo'/><category term='OO Design'/><category term='cfeclipse dictionaries'/><category term='Hudson'/><category term='Humor'/><category term='eclipse'/><category term='Documentation'/><category term='closures'/><category term='announcements'/><category term='facebook'/><category term='launchy'/><category term='mxunit product update'/><category term='Continuous Integration'/><category term='cfml'/><category term='scala'/><category term='ant'/><category term='air'/><category term='java'/><category term='refactoring'/><category term='mylyn'/><category term='mxunit eclipse plugin'/><category term='webservices'/><category term='energy saving tips'/><category term='unit testing testing private methods'/><category term='Presentations'/><category term='Best Practices'/><category term='flex'/><category term='test automation'/><category term='LiveCycle'/><category term='android'/><category term='Learning'/><category term='cfant'/><category term='noise control'/><category term='mobile development'/><category term='drivers'/><category term='flash builder'/><category term='generics'/><category term='twitter'/><category term='cfeclipse'/><category term='testability'/><category term='coldfusion builder'/><category term='unit testing'/><category term='ria'/><category term='fun'/><category term='cfObjective'/><category term='blogging'/><category term='svfug'/><category term='conferences'/><category term='subversion'/><title type='text'>Comments on MXUnit Blog: "Look, Ma. No Password!" - Secure Hashing in ColdF...</title><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://blog.mxunit.org/feeds/6176194572139828121/comments/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1973750947775262558/6176194572139828121/comments/default'/><link rel='alternate' type='text/html' href='http://blog.mxunit.org/2009/06/look-ma-no-password-secure-hashing-in.html'/><author><name>bill shelton</name><uri>http://www.blogger.com/profile/06624894387927690246</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_R-2JPB8crqk/TIdxkrbeOnI/AAAAAAAAAZw/hHv2ocuuyqA/S220/avatar-twitter-white-bg.png'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>20</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-1973750947775262558.post-9091245719674711566</id><published>2010-10-26T22:41:24.662-04:00</published><updated>2010-10-26T22:41:24.662-04:00</updated><title type='text'>Thanks Mark,

The Crypto I wrote and the built-in ...</title><content type='html'>Thanks Mark,&lt;br /&gt;&lt;br /&gt;The Crypto I wrote and the built-in ColdFusion encryption functions &amp;quot;should&amp;quot; do the same things, for the most part. However, the built-in functions are black boxes in which you need to trust Adobe to implement it correctly *and* certify it according to standards. I didn&amp;#39;t see any assurances in the docs; so, I felt more comfortable using Java to do the crypto stuff. (It was also a good exercise)&lt;br /&gt;&lt;br /&gt;Additionally, I compared the hash() function in CF to one written by hand in Java, and (if I recall correctly) they computed comparable results.&lt;br /&gt;&lt;br /&gt;http://github.com/virtix/cfcrypto/blob/master/Crypto.cfc&lt;br /&gt;&lt;br /&gt;best,&lt;br /&gt;bill</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1973750947775262558/6176194572139828121/comments/default/9091245719674711566'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1973750947775262558/6176194572139828121/comments/default/9091245719674711566'/><link rel='alternate' type='text/html' href='http://blog.mxunit.org/2009/06/look-ma-no-password-secure-hashing-in.html?showComment=1288147284662#c9091245719674711566' title=''/><author><name>bill shelton</name><uri>http://www.blogger.com/profile/06624894387927690246</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17359140296736057249'/><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_R-2JPB8crqk/TIdxkrbeOnI/AAAAAAAAAZw/hHv2ocuuyqA/S220/avatar-twitter-white-bg.png'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.mxunit.org/2009/06/look-ma-no-password-secure-hashing-in.html' ref='tag:blogger.com,1999:blog-1973750947775262558.post-6176194572139828121' source='http://www.blogger.com/feeds/1973750947775262558/posts/default/6176194572139828121' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-1094271333'/></entry><entry><id>tag:blogger.com,1999:blog-1973750947775262558.post-7522544963356422158</id><published>2010-10-26T17:17:03.820-04:00</published><updated>2010-10-26T17:17:03.820-04:00</updated><title type='text'>Very nice blog. 

Could you comment on the value o...</title><content type='html'>Very nice blog. &lt;br /&gt;&lt;br /&gt;Could you comment on the value of using your Crypto class vs. using GenerateSecretKey and Encrypt/Decrypt coldfusion encryption library functions to create the salt and hash.&lt;br /&gt;&lt;br /&gt;Mark</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1973750947775262558/6176194572139828121/comments/default/7522544963356422158'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1973750947775262558/6176194572139828121/comments/default/7522544963356422158'/><link rel='alternate' type='text/html' href='http://blog.mxunit.org/2009/06/look-ma-no-password-secure-hashing-in.html?showComment=1288127823820#c7522544963356422158' title=''/><author><name>Mark</name><uri>http://www.blogger.com/profile/17847238521440251101</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.mxunit.org/2009/06/look-ma-no-password-secure-hashing-in.html' ref='tag:blogger.com,1999:blog-1973750947775262558.post-6176194572139828121' source='http://www.blogger.com/feeds/1973750947775262558/posts/default/6176194572139828121' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-1465251769'/></entry><entry><id>tag:blogger.com,1999:blog-1973750947775262558.post-6561261701459712239</id><published>2010-06-01T17:42:24.243-04:00</published><updated>2010-06-01T17:42:24.243-04:00</updated><title type='text'>Thanks, Jamie, especially for the SHA-512 correcti...</title><content type='html'>Thanks, Jamie, especially for the SHA-512 correction.&lt;br /&gt;&lt;br /&gt;bill</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1973750947775262558/6176194572139828121/comments/default/6561261701459712239'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1973750947775262558/6176194572139828121/comments/default/6561261701459712239'/><link rel='alternate' type='text/html' href='http://blog.mxunit.org/2009/06/look-ma-no-password-secure-hashing-in.html?showComment=1275428544243#c6561261701459712239' title=''/><author><name>bill shelton</name><uri>http://www.blogger.com/profile/06624894387927690246</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17359140296736057249'/><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_R-2JPB8crqk/SwrVU6mIIkI/AAAAAAAAARY/DLzjh7bQn3Y/S220/billy_south_pk_avatar.png'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.mxunit.org/2009/06/look-ma-no-password-secure-hashing-in.html' ref='tag:blogger.com,1999:blog-1973750947775262558.post-6176194572139828121' source='http://www.blogger.com/feeds/1973750947775262558/posts/default/6176194572139828121' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-1094271333'/></entry><entry><id>tag:blogger.com,1999:blog-1973750947775262558.post-6653395858900142840</id><published>2010-06-01T13:20:58.282-04:00</published><updated>2010-06-01T13:20:58.282-04:00</updated><title type='text'>This is awesome, Bill--must read for any developer...</title><content type='html'>This is awesome, Bill--must read for any developer not already aware of this important information. I bookmarked this a while back and just came back as I had a good use case for it.&lt;br /&gt;&lt;br /&gt;I did need to correct one error in your Crypto.cfc: each instance of &amp;quot;SHA512&amp;quot; should be &amp;quot;SHA-512&amp;quot; to work as expected (missing hyphen).&lt;br /&gt;&lt;br /&gt;Thanks!</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1973750947775262558/6176194572139828121/comments/default/6653395858900142840'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1973750947775262558/6176194572139828121/comments/default/6653395858900142840'/><link rel='alternate' type='text/html' href='http://blog.mxunit.org/2009/06/look-ma-no-password-secure-hashing-in.html?showComment=1275412858282#c6653395858900142840' title=''/><author><name>Jamie Krug</name><uri>http://www.blogger.com/profile/07683293861656994856</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.mxunit.org/2009/06/look-ma-no-password-secure-hashing-in.html' ref='tag:blogger.com,1999:blog-1973750947775262558.post-6176194572139828121' source='http://www.blogger.com/feeds/1973750947775262558/posts/default/6176194572139828121' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-2103703563'/></entry><entry><id>tag:blogger.com,1999:blog-1973750947775262558.post-5185380623824339119</id><published>2010-03-12T12:28:39.026-05:00</published><updated>2010-03-12T12:28:39.026-05:00</updated><title type='text'>Hi, Programming an application is different from p...</title><content type='html'>Hi, Programming an application is different from programming with security in mind. Ordinary programmers mostly do not know today&amp;#39;s computer security scenario in the world, and how simple it can take a hacker to break the security of the application in minutes. For more information on hacking and related subject go through the following site:http://www.eccouncil.org/certification/certified_ethical_hacker.aspx</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1973750947775262558/6176194572139828121/comments/default/5185380623824339119'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1973750947775262558/6176194572139828121/comments/default/5185380623824339119'/><link rel='alternate' type='text/html' href='http://blog.mxunit.org/2009/06/look-ma-no-password-secure-hashing-in.html?showComment=1268414919026#c5185380623824339119' title=''/><author><name>Smith</name><uri>http://www.blogger.com/profile/04178379802038260500</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.mxunit.org/2009/06/look-ma-no-password-secure-hashing-in.html' ref='tag:blogger.com,1999:blog-1973750947775262558.post-6176194572139828121' source='http://www.blogger.com/feeds/1973750947775262558/posts/default/6176194572139828121' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-1829356209'/></entry><entry><id>tag:blogger.com,1999:blog-1973750947775262558.post-7273419467648628472</id><published>2009-11-17T15:43:03.577-05:00</published><updated>2009-11-17T15:43:03.577-05:00</updated><title type='text'>Good links and points. Thanks!

bill</title><content type='html'>Good links and points. Thanks!&lt;br /&gt;&lt;br /&gt;bill</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1973750947775262558/6176194572139828121/comments/default/7273419467648628472'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1973750947775262558/6176194572139828121/comments/default/7273419467648628472'/><link rel='alternate' type='text/html' href='http://blog.mxunit.org/2009/06/look-ma-no-password-secure-hashing-in.html?showComment=1258490583577#c7273419467648628472' title=''/><author><name>bill shelton</name><uri>http://www.blogger.com/profile/06624894387927690246</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17359140296736057249'/><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://4.bp.blogspot.com/_R-2JPB8crqk/SUEE7sNuL1I/AAAAAAAAAGU/-bo1g6-m8fk/S220/che3.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.mxunit.org/2009/06/look-ma-no-password-secure-hashing-in.html' ref='tag:blogger.com,1999:blog-1973750947775262558.post-6176194572139828121' source='http://www.blogger.com/feeds/1973750947775262558/posts/default/6176194572139828121' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-1094271333'/></entry><entry><id>tag:blogger.com,1999:blog-1973750947775262558.post-5701524145852260173</id><published>2009-11-17T14:06:31.120-05:00</published><updated>2009-11-17T14:06:31.120-05:00</updated><title type='text'>&lt;a href="http://en.wikipedia.org/wiki/Salt_%28cryp...</title><content type='html'>&lt;a href="http://en.wikipedia.org/wiki/Salt_%28cryptography%29" rel="nofollow"&gt;http://en.wikipedia.org/wiki/Salt_%28cryptography%29&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.aspheute.com/english/20040105.asp" rel="nofollow"&gt;http://www.aspheute.com/english/20040105.asp&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.java2s.com/Tutorial/Java/0490__Security/Setpasswordsalt.htm" rel="nofollow"&gt;http://www.java2s.com/Tutorial/Java/0490__Security/Setpasswordsalt.htm&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.jasypt.org/howtoencryptuserpasswords.html" rel="nofollow"&gt;http://www.jasypt.org/howtoencryptuserpasswords.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Also, it&amp;#39;s important to understand that hashes should ultimately be made from bytes. Not simply strings. In fact, the ColdFusion&amp;#39;s Hash function converts the input string to bytes during it&amp;#39;s process.&lt;br /&gt;&lt;br /&gt;You need to make hashes work the same everywhere. You can provide hashes so others can check integrity on their own. For example, hashing files.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://en.wikipedia.org/wiki/Examples_of_SHA_digests" rel="nofollow"&gt;http://en.wikipedia.org/wiki/Examples_of_SHA_digests&lt;/a&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1973750947775262558/6176194572139828121/comments/default/5701524145852260173'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1973750947775262558/6176194572139828121/comments/default/5701524145852260173'/><link rel='alternate' type='text/html' href='http://blog.mxunit.org/2009/06/look-ma-no-password-secure-hashing-in.html?showComment=1258484791120#c5701524145852260173' title=''/><author><name>Anonymous</name><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img1.blogblog.com/img/blank.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.mxunit.org/2009/06/look-ma-no-password-secure-hashing-in.html' ref='tag:blogger.com,1999:blog-1973750947775262558.post-6176194572139828121' source='http://www.blogger.com/feeds/1973750947775262558/posts/default/6176194572139828121' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-480183323'/></entry><entry><id>tag:blogger.com,1999:blog-1973750947775262558.post-3045454287466732988</id><published>2009-11-17T13:46:28.394-05:00</published><updated>2009-11-17T13:46:28.394-05:00</updated><title type='text'>Maybe you could point me and other readers to the ...</title><content type='html'>Maybe you could point me and other readers to the &amp;quot;normal&amp;quot; hashing algorithms to which you refer? I&amp;#39;ll quickly correct a mistake, error, or omission, but a good citation would help with that rather than blindly agreeing with an anonymous comment, don&amp;#39;t you agree?&lt;br /&gt;&lt;br /&gt;bill</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1973750947775262558/6176194572139828121/comments/default/3045454287466732988'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1973750947775262558/6176194572139828121/comments/default/3045454287466732988'/><link rel='alternate' type='text/html' href='http://blog.mxunit.org/2009/06/look-ma-no-password-secure-hashing-in.html?showComment=1258483588394#c3045454287466732988' title=''/><author><name>bill shelton</name><uri>http://www.blogger.com/profile/06624894387927690246</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17359140296736057249'/><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://4.bp.blogspot.com/_R-2JPB8crqk/SUEE7sNuL1I/AAAAAAAAAGU/-bo1g6-m8fk/S220/che3.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.mxunit.org/2009/06/look-ma-no-password-secure-hashing-in.html' ref='tag:blogger.com,1999:blog-1973750947775262558.post-6176194572139828121' source='http://www.blogger.com/feeds/1973750947775262558/posts/default/6176194572139828121' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-1094271333'/></entry><entry><id>tag:blogger.com,1999:blog-1973750947775262558.post-8491895985659293486</id><published>2009-11-17T13:35:04.936-05:00</published><updated>2009-11-17T13:35:04.936-05:00</updated><title type='text'>Why not do:

&lt;i&gt;
&amp;lt;cffunction name=&amp;quot;genSalt...</title><content type='html'>Why not do:&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&amp;lt;cffunction name=&amp;quot;genSalt&amp;quot; access=&amp;quot;public&amp;quot; returnType=&amp;quot;string&amp;quot;&amp;gt;&lt;br /&gt;   &amp;lt;cfargument name=&amp;quot;size&amp;quot; type=&amp;quot;numeric&amp;quot; required=&amp;quot;false&amp;quot; default=&amp;quot;16&amp;quot; /&amp;gt;&lt;br /&gt;   &amp;lt;cfscript&amp;gt;&lt;br /&gt;      var byteType = createObject(&amp;#39;java&amp;#39;, &amp;#39;java.lang.Byte&amp;#39;).TYPE;&lt;br /&gt;      var bytes = createObject(&amp;#39;java&amp;#39;,&amp;#39;java.lang.reflect.Array&amp;#39;).newInstance( byteType , size);&lt;br /&gt;      createObject(&amp;#39;java&amp;#39;, &amp;#39;java.security.SecureRandom&amp;#39;).nextBytes(bytes);&lt;br /&gt;      return createObject(&amp;quot;java&amp;quot;, &amp;quot;java.lang.String&amp;quot;).init(bytes);&lt;br /&gt;   &amp;lt;/cfscript&amp;gt;&lt;br /&gt;&amp;lt;/cffunction&amp;gt;&lt;br /&gt;&lt;/i&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1973750947775262558/6176194572139828121/comments/default/8491895985659293486'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1973750947775262558/6176194572139828121/comments/default/8491895985659293486'/><link rel='alternate' type='text/html' href='http://blog.mxunit.org/2009/06/look-ma-no-password-secure-hashing-in.html?showComment=1258482904936#c8491895985659293486' title=''/><author><name>Anonymous</name><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img1.blogblog.com/img/blank.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.mxunit.org/2009/06/look-ma-no-password-secure-hashing-in.html' ref='tag:blogger.com,1999:blog-1973750947775262558.post-6176194572139828121' source='http://www.blogger.com/feeds/1973750947775262558/posts/default/6176194572139828121' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-480183323'/></entry><entry><id>tag:blogger.com,1999:blog-1973750947775262558.post-6866648844362175134</id><published>2009-11-17T13:29:52.904-05:00</published><updated>2009-11-17T13:29:52.904-05:00</updated><title type='text'>&amp;gt; Maybe I&amp;#39;m missing something, but I don&amp;#3...</title><content type='html'>&amp;gt; Maybe I&amp;#39;m missing something, but I don&amp;#39;t see the weirdness of generating a hash from two strings one of which is random and one that is not.&lt;br /&gt;&lt;br /&gt;It&amp;#39;s not about random v. not. It&amp;#39;s about one string being Base64 and the other being literal.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;gt; &amp;gt;Normal hash functions usually append literal string salt to the literal string password.&lt;br /&gt;&amp;gt; &amp;quot;Normal&amp;quot; sounds too broad and general to be a valid point.&lt;br /&gt;&lt;br /&gt;Normal is good.&lt;br /&gt;&lt;br /&gt;What if you change programming languages?&lt;br /&gt;&lt;br /&gt;Or want to allow other apps to test against the same hashes.&lt;br /&gt;&lt;br /&gt;Your algorithm better be repeatable in other languages and implementations.&lt;br /&gt;&lt;br /&gt;That&amp;#39;s why you should do iterative hashes exactly the same as everyone else.&lt;br /&gt;&lt;br /&gt;And concatenating a base64 data and string literal data is not normal.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1973750947775262558/6176194572139828121/comments/default/6866648844362175134'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1973750947775262558/6176194572139828121/comments/default/6866648844362175134'/><link rel='alternate' type='text/html' href='http://blog.mxunit.org/2009/06/look-ma-no-password-secure-hashing-in.html?showComment=1258482592904#c6866648844362175134' title=''/><author><name>Anonymous</name><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img1.blogblog.com/img/blank.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.mxunit.org/2009/06/look-ma-no-password-secure-hashing-in.html' ref='tag:blogger.com,1999:blog-1973750947775262558.post-6176194572139828121' source='http://www.blogger.com/feeds/1973750947775262558/posts/default/6176194572139828121' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-480183323'/></entry><entry><id>tag:blogger.com,1999:blog-1973750947775262558.post-21561198926593186</id><published>2009-11-16T16:20:51.482-05:00</published><updated>2009-11-16T16:20:51.482-05:00</updated><title type='text'>@Anonymous 1

&amp;gt;It&amp;#39;s weird ...Shouldn&amp;#39;t ...</title><content type='html'>@Anonymous 1&lt;br /&gt;&lt;br /&gt;&amp;gt;It&amp;#39;s weird ...Shouldn&amp;#39;t both be in the same format?&lt;br /&gt;Why? The computeHash() method accepts any salt you want to give it. Consider secure random salt recommendations as per&lt;br /&gt;PKCS #5 v2.1: ftp://ftp.rsasecurity.com/pub/pkcs/pkcs-5v2/pkcs5v2_1.pdf &lt;br /&gt;Maybe I&amp;#39;m missing something, but I don&amp;#39;t see the weirdness of generating a hash from two strings one of which is random and one that is not. &lt;br /&gt;&lt;br /&gt;&amp;gt;Normal hash functions usually append literal string salt to the literal string password.&lt;br /&gt;&amp;quot;Normal&amp;quot; sounds too broad and general to be a valid point.&lt;br /&gt;&lt;br /&gt;&amp;gt;It seems that&amp;#39;s the reason why there is the Encrypt and EncryptBinary functions.&lt;br /&gt;Probably ... But in CF7 and in Standard Edition ColdFusion Licenses, you&amp;#39;re limitted to 5 basic encryption algorithms. I felt more confident using a hand rolled and recommended method rather than relying on a black box implementation.&lt;br /&gt;&lt;br /&gt;@Anonymous 2&lt;br /&gt;That works and makes the string prior to the hashing more readable wahoo ... ;-)</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1973750947775262558/6176194572139828121/comments/default/21561198926593186'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1973750947775262558/6176194572139828121/comments/default/21561198926593186'/><link rel='alternate' type='text/html' href='http://blog.mxunit.org/2009/06/look-ma-no-password-secure-hashing-in.html?showComment=1258406451482#c21561198926593186' title=''/><author><name>bill shelton</name><uri>http://www.blogger.com/profile/06624894387927690246</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17359140296736057249'/><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://4.bp.blogspot.com/_R-2JPB8crqk/SUEE7sNuL1I/AAAAAAAAAGU/-bo1g6-m8fk/S220/che3.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.mxunit.org/2009/06/look-ma-no-password-secure-hashing-in.html' ref='tag:blogger.com,1999:blog-1973750947775262558.post-6176194572139828121' source='http://www.blogger.com/feeds/1973750947775262558/posts/default/6176194572139828121' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-1094271333'/></entry><entry><id>tag:blogger.com,1999:blog-1973750947775262558.post-7117289166739732665</id><published>2009-11-16T15:23:26.019-05:00</published><updated>2009-11-16T15:23:26.019-05:00</updated><title type='text'>Instead of:
&lt;i&gt;return toBase64(bytes);&lt;/i&gt;

You co...</title><content type='html'>Instead of:&lt;br /&gt;&lt;i&gt;return toBase64(bytes);&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;You could:&lt;br /&gt;&lt;i&gt;return createObject(&amp;quot;java&amp;quot;, &amp;quot;java.lang.String&amp;quot;).init(bytes);&lt;/i&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1973750947775262558/6176194572139828121/comments/default/7117289166739732665'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1973750947775262558/6176194572139828121/comments/default/7117289166739732665'/><link rel='alternate' type='text/html' href='http://blog.mxunit.org/2009/06/look-ma-no-password-secure-hashing-in.html?showComment=1258403006019#c7117289166739732665' title=''/><author><name>Anonymous</name><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img1.blogblog.com/img/blank.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.mxunit.org/2009/06/look-ma-no-password-secure-hashing-in.html' ref='tag:blogger.com,1999:blog-1973750947775262558.post-6176194572139828121' source='http://www.blogger.com/feeds/1973750947775262558/posts/default/6176194572139828121' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-480183323'/></entry><entry><id>tag:blogger.com,1999:blog-1973750947775262558.post-8416337746760834869</id><published>2009-11-16T15:08:14.887-05:00</published><updated>2009-11-16T15:08:14.887-05:00</updated><title type='text'>It&amp;#39;s weird to append a base64 encoded string s...</title><content type='html'>It&amp;#39;s weird to append a base64 encoded string salt to a literal string password to do the hash.&lt;br /&gt;&lt;br /&gt;Shouldn&amp;#39;t both be in the same format?&lt;br /&gt;&lt;br /&gt;Normal hash functions usually append literal string salt to the literal string password.&lt;br /&gt;&lt;br /&gt;This is complex in ColdFusion, because it&amp;#39;s not intuitive to get byte arrays into literal strings without encoding. That is, CharsetEncode changes the byte values, which is bad.&lt;br /&gt;&lt;br /&gt;It seems that&amp;#39;s the reason why there is the Encrypt and EncryptBinary functions.&lt;br /&gt;&lt;br /&gt;Encrypt does what you did, including the iterations, but takes a byte array salt.&lt;br /&gt;&lt;br /&gt;EncryptBinary does the same, but takes a byte array string and byte array salt.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1973750947775262558/6176194572139828121/comments/default/8416337746760834869'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1973750947775262558/6176194572139828121/comments/default/8416337746760834869'/><link rel='alternate' type='text/html' href='http://blog.mxunit.org/2009/06/look-ma-no-password-secure-hashing-in.html?showComment=1258402094887#c8416337746760834869' title=''/><author><name>Anonymous</name><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img1.blogblog.com/img/blank.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.mxunit.org/2009/06/look-ma-no-password-secure-hashing-in.html' ref='tag:blogger.com,1999:blog-1973750947775262558.post-6176194572139828121' source='http://www.blogger.com/feeds/1973750947775262558/posts/default/6176194572139828121' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-480183323'/></entry><entry><id>tag:blogger.com,1999:blog-1973750947775262558.post-8138964740109216133</id><published>2009-09-14T15:53:59.736-04:00</published><updated>2009-09-14T15:53:59.736-04:00</updated><title type='text'>La principal ventaja de adicionar una &amp;quot;sal&amp;qu...</title><content type='html'>La principal ventaja de adicionar una &amp;quot;sal&amp;quot; (provisto que la sal sea lo suficientemente gande y randómica) es obligar al atacante a generar una tabla arcoiris especializada para atacar tu base de datos y no usar una preconstruida.  &lt;br /&gt;&lt;br /&gt;Desde ese punto de vista, tener una sal &amp;quot;fija&amp;quot; para toda la base de datos es un acierto. &lt;br /&gt;&lt;br /&gt;Esto no implica no adicionar otra segunda sal variable para cada registro, de forma que obliguemos al atacante a recostruir la tabla arcoiris por cada registro.&lt;br /&gt;&lt;br /&gt;NOTA: No pensar que por este método uno le adicona ENTROPIA a la password, solo la preserva&lt;br /&gt;&lt;br /&gt;One of the main advantages of adding a salt, (provided that the salt is not only random but large enough and unique) is to make an attacker to build a new rainbow table, and to force him to not use a pre constructed one.&lt;br /&gt;&lt;br /&gt;Form that point of view to have a &amp;quot;fixed&amp;quot; salt for the whole data base is a good prectice. &lt;br /&gt;&lt;br /&gt;This method does not implies we cannot add another second salt for each register, and to force the attacker to rebuild the rainbow table for each register.&lt;br /&gt;&lt;br /&gt;NOTE: You cannot add &amp;quot;ENTROPY&amp;quot; to the password(s) what is a different concept.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Too Jai&lt;br /&gt;&lt;br /&gt;Comentarios /Comments:&lt;br /&gt;karlinga*(at) fastmail(dot) fm&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;There are interesting tools in Javascript also, to make hashes on the browser side also: see  Paj Cripto Home page for more info&lt;br /&gt;http://pajhome.org.uk/</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1973750947775262558/6176194572139828121/comments/default/8138964740109216133'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1973750947775262558/6176194572139828121/comments/default/8138964740109216133'/><link rel='alternate' type='text/html' href='http://blog.mxunit.org/2009/06/look-ma-no-password-secure-hashing-in.html?showComment=1252958039736#c8138964740109216133' title=''/><author><name>Anonymous</name><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img1.blogblog.com/img/blank.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.mxunit.org/2009/06/look-ma-no-password-secure-hashing-in.html' ref='tag:blogger.com,1999:blog-1973750947775262558.post-6176194572139828121' source='http://www.blogger.com/feeds/1973750947775262558/posts/default/6176194572139828121' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-955375039'/></entry><entry><id>tag:blogger.com,1999:blog-1973750947775262558.post-4009698658850015758</id><published>2009-09-10T09:53:13.513-04:00</published><updated>2009-09-10T09:53:13.513-04:00</updated><title type='text'>So according to Peter, if the salt and the hashed ...</title><content type='html'>So according to Peter, if the salt and the hashed password are stored in the same table, it&amp;#39;s not really securing the password?&lt;br /&gt;&lt;br /&gt;What&amp;#39;s the best practice for using salt then?</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1973750947775262558/6176194572139828121/comments/default/4009698658850015758'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1973750947775262558/6176194572139828121/comments/default/4009698658850015758'/><link rel='alternate' type='text/html' href='http://blog.mxunit.org/2009/06/look-ma-no-password-secure-hashing-in.html?showComment=1252590793513#c4009698658850015758' title=''/><author><name>Tony E</name><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img1.blogblog.com/img/blank.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.mxunit.org/2009/06/look-ma-no-password-secure-hashing-in.html' ref='tag:blogger.com,1999:blog-1973750947775262558.post-6176194572139828121' source='http://www.blogger.com/feeds/1973750947775262558/posts/default/6176194572139828121' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-52888617'/></entry><entry><id>tag:blogger.com,1999:blog-1973750947775262558.post-1838835022191685370</id><published>2009-07-27T16:52:05.560-04:00</published><updated>2009-07-27T16:52:05.560-04:00</updated><title type='text'>Great post. One quick comment:

If your salt isn&amp;#...</title><content type='html'>Great post. One quick comment:&lt;br /&gt;&lt;br /&gt;If your salt isn&amp;#39;t secret (e.g. you&amp;#39;re gonna store it with the password in the same db that the same person steals at the same time), you get the benefits of salting using almost anything unique as a salt (that you need to rerun the dictionary attack against each password - not just against the whole db). &lt;br /&gt;&lt;br /&gt;Because of that, if I&amp;#39;m not using a secret hash (stored in a separate db with a separate access mechanism on a separate server), I just use a simple derivation of the email/username as the salt. It means you only have to run one query to validate a user instead of two.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1973750947775262558/6176194572139828121/comments/default/1838835022191685370'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1973750947775262558/6176194572139828121/comments/default/1838835022191685370'/><link rel='alternate' type='text/html' href='http://blog.mxunit.org/2009/06/look-ma-no-password-secure-hashing-in.html?showComment=1248727925560#c1838835022191685370' title=''/><author><name>Peter Bell</name><uri>http://www.blogger.com/profile/03279698994580569133</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.mxunit.org/2009/06/look-ma-no-password-secure-hashing-in.html' ref='tag:blogger.com,1999:blog-1973750947775262558.post-6176194572139828121' source='http://www.blogger.com/feeds/1973750947775262558/posts/default/6176194572139828121' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-369218352'/></entry><entry><id>tag:blogger.com,1999:blog-1973750947775262558.post-6730495790908586535</id><published>2009-06-29T07:31:03.718-04:00</published><updated>2009-06-29T07:31:03.718-04:00</updated><title type='text'>@john, good eye! you&amp;#39;re absolutely correct abo...</title><content type='html'>@john, good eye! you&amp;#39;re absolutely correct about the rehash. thanks for pointing that out! i originally used a different implementation, and introduced that while refactoring. (note to self: find missing test). the gist is updated, so, the post will reflect the new code. i kept the salt in the rehash. any comments on whether that will make the hash stronger or not? --bill</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1973750947775262558/6176194572139828121/comments/default/6730495790908586535'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1973750947775262558/6176194572139828121/comments/default/6730495790908586535'/><link rel='alternate' type='text/html' href='http://blog.mxunit.org/2009/06/look-ma-no-password-secure-hashing-in.html?showComment=1246275063718#c6730495790908586535' title=''/><author><name>billy</name><uri>http://www.blogger.com/profile/06624894387927690246</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17359140296736057249'/><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://4.bp.blogspot.com/_R-2JPB8crqk/SUEE7sNuL1I/AAAAAAAAAGU/-bo1g6-m8fk/S220/che3.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.mxunit.org/2009/06/look-ma-no-password-secure-hashing-in.html' ref='tag:blogger.com,1999:blog-1973750947775262558.post-6176194572139828121' source='http://www.blogger.com/feeds/1973750947775262558/posts/default/6176194572139828121' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-1094271333'/></entry><entry><id>tag:blogger.com,1999:blog-1973750947775262558.post-1006141945487147694</id><published>2009-06-29T06:03:43.219-04:00</published><updated>2009-06-29T06:03:43.219-04:00</updated><title type='text'>Hi Billy, really interesting post. 
I was just loo...</title><content type='html'>Hi Billy, really interesting post. &lt;br /&gt;I was just looking at the computeHash method and the iterations don&amp;#39;t seem to do anything. At the moment the code is:&lt;br /&gt;&lt;br /&gt;var hashed = &amp;#39;&amp;#39;;&lt;br /&gt;hashed = hash( password &amp;amp; salt, arguments.algorithm, &amp;#39;UTF-8&amp;#39; );&lt;br /&gt;  for (i = 1; i &amp;lt;= iterations; i++) {&lt;br /&gt;    hashed = hash( password &amp;amp; salt, arguments.algorithm, &amp;#39;UTF-8&amp;#39; );&lt;br /&gt;}&lt;br /&gt;return hashed;&lt;br /&gt;&lt;br /&gt;shouldn&amp;#39;t that be:&lt;br /&gt;&lt;br /&gt;var hashed = &amp;#39;&amp;#39;;&lt;br /&gt;hashed = hash( password &amp;amp; salt, arguments.algorithm, &amp;#39;UTF-8&amp;#39; );&lt;br /&gt;  for (i = 1; i &amp;lt;= iterations; i++) {&lt;br /&gt;    hashed = hash( hashed, arguments.algorithm, &amp;#39;UTF-8&amp;#39; );&lt;br /&gt;}&lt;br /&gt;return hashed;&lt;br /&gt;&lt;br /&gt;Otherwise the loop is not re-hashing the string each time. I alos noticed that the &amp;quot;i&amp;quot; isn&amp;#39;t var scoped :)</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1973750947775262558/6176194572139828121/comments/default/1006141945487147694'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1973750947775262558/6176194572139828121/comments/default/1006141945487147694'/><link rel='alternate' type='text/html' href='http://blog.mxunit.org/2009/06/look-ma-no-password-secure-hashing-in.html?showComment=1246269823219#c1006141945487147694' title=''/><author><name>John Whish</name><uri>http://www.aliaspooryorik.com/blog/</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img1.blogblog.com/img/blank.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.mxunit.org/2009/06/look-ma-no-password-secure-hashing-in.html' ref='tag:blogger.com,1999:blog-1973750947775262558.post-6176194572139828121' source='http://www.blogger.com/feeds/1973750947775262558/posts/default/6176194572139828121' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-56461866'/></entry><entry><id>tag:blogger.com,1999:blog-1973750947775262558.post-9152800026607398506</id><published>2009-06-28T21:35:12.380-04:00</published><updated>2009-06-28T21:35:12.380-04:00</updated><title type='text'>@henry, thanks. you know, generateSecretKey() was ...</title><content type='html'>@henry, thanks. you know, generateSecretKey() was the first route i took; but, in the end, i felt more comfortable using SecureRandom ( &lt;br /&gt;http://java.sun.com/javase/6/docs/api/java/security/SecureRandom.html), simply because the API was more articulate with respect to standards than what&amp;#39;s available for generateSecretKey(). i would assume, however, ColdFusion probably uses SecureRandom under the hood. Can anyone confirm? --bill</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1973750947775262558/6176194572139828121/comments/default/9152800026607398506'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1973750947775262558/6176194572139828121/comments/default/9152800026607398506'/><link rel='alternate' type='text/html' href='http://blog.mxunit.org/2009/06/look-ma-no-password-secure-hashing-in.html?showComment=1246239312380#c9152800026607398506' title=''/><author><name>billy</name><uri>http://www.blogger.com/profile/06624894387927690246</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17359140296736057249'/><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://4.bp.blogspot.com/_R-2JPB8crqk/SUEE7sNuL1I/AAAAAAAAAGU/-bo1g6-m8fk/S220/che3.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.mxunit.org/2009/06/look-ma-no-password-secure-hashing-in.html' ref='tag:blogger.com,1999:blog-1973750947775262558.post-6176194572139828121' source='http://www.blogger.com/feeds/1973750947775262558/posts/default/6176194572139828121' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-1094271333'/></entry><entry><id>tag:blogger.com,1999:blog-1973750947775262558.post-5632754709670163178</id><published>2009-06-28T16:52:20.123-04:00</published><updated>2009-06-28T16:52:20.123-04:00</updated><title type='text'>You may use GenerateSecretKey() to generate a salt...</title><content type='html'>You may use GenerateSecretKey() to generate a salt.&lt;br /&gt;&lt;br /&gt;http://www.cfquickdocs.com/cf8/#GenerateSecretKey</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1973750947775262558/6176194572139828121/comments/default/5632754709670163178'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1973750947775262558/6176194572139828121/comments/default/5632754709670163178'/><link rel='alternate' type='text/html' href='http://blog.mxunit.org/2009/06/look-ma-no-password-secure-hashing-in.html?showComment=1246222340123#c5632754709670163178' title=''/><author><name>Henry Ho</name><uri>http://www.blogger.com/profile/17002578166283757395</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://1.bp.blogspot.com/_YEbWCxPKDw4/SJrxm5JtFqI/AAAAAAAAAJI/UvzakVWXUFE/s1600-R/15-06-08_2043.jpg'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.mxunit.org/2009/06/look-ma-no-password-secure-hashing-in.html' ref='tag:blogger.com,1999:blog-1973750947775262558.post-6176194572139828121' source='http://www.blogger.com/feeds/1973750947775262558/posts/default/6176194572139828121' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-1394237786'/></entry></feed>
