<?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 for The Crypt</title>
	<atom:link href="http://www.crypt.co.za/comments/feed" rel="self" type="application/rss+xml" />
	<link>http://www.crypt.co.za</link>
	<description>Welcome to The Twylite Zone.</description>
	<lastBuildDate>Fri, 12 Feb 2010 01:18:44 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
	<item>
		<title>Comment on OpenID: the ugly (redux) by AJK</title>
		<link>http://www.crypt.co.za/post/62#comment-37</link>
		<dc:creator>AJK</dc:creator>
		<pubDate>Fri, 12 Feb 2010 01:18:44 +0000</pubDate>
		<guid isPermaLink="false">http://www.crypt.co.za/post/62#comment-37</guid>
		<description>I started reading the OpenID docs about an hour ago and came up with this attack and promptly found your page describing it.  It&#039;s scary how easy it was to figure out that OpenID isn&#039;t very good at authentication.  I&#039;m having a little trouble seeing how, if all URLs are https, you&#039;re not okay.  Of course, this means I bought a SSL server certificate for my OpenID URL, so why not just buy a SSL client certificate instead?</description>
		<content:encoded><![CDATA[<p>I started reading the OpenID docs about an hour ago and came up with this attack and promptly found your page describing it.  It&#8217;s scary how easy it was to figure out that OpenID isn&#8217;t very good at authentication.  I&#8217;m having a little trouble seeing how, if all URLs are https, you&#8217;re not okay.  Of course, this means I bought a SSL server certificate for my OpenID URL, so why not just buy a SSL client certificate instead?</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Bad research by anderson</title>
		<link>http://www.crypt.co.za/post/57#comment-35</link>
		<dc:creator>anderson</dc:creator>
		<pubDate>Fri, 15 May 2009 04:29:47 +0000</pubDate>
		<guid isPermaLink="false">http://www.crypt.co.za/post/57#comment-35</guid>
		<description>Bad research...rnI need to find an article.. any news site.. published in the last 7 days and then say in a paragraph or 2 why it is bad research. And.. i cant find any.rnhelp? haha</description>
		<content:encoded><![CDATA[<p>Bad research&#8230;rnI need to find an article.. any news site.. published in the last 7 days and then say in a paragraph or 2 why it is bad research. And.. i cant find any.rnhelp? haha</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on CSV &#8211; Comma Separated Value format by Mark</title>
		<link>http://www.crypt.co.za/post/44#comment-33</link>
		<dc:creator>Mark</dc:creator>
		<pubDate>Tue, 20 Jan 2009 12:34:01 +0000</pubDate>
		<guid isPermaLink="false">http://www.crypt.co.za/post/44#comment-33</guid>
		<description>Hi, I was looking round to see how the CSV format is described and came across your post. I&#039;m trying to parse a CSV file and I&#039;m comparing my result to that of Excel. rnrnI agree with your EBNF description except that I noticed that Excel does produce &quot;&quot;&quot;hello&quot; in a CSV file if you type [&quot;hello] (without the square brackets) in a cell. Therefore, I would change your description of atom to allow &quot;&quot; as the first two characters rather than forcing them to be preceded by [qchar]:rnrn   atom ::= [char]* &#124; &quot;[qchar]*[&quot;&quot;[qchar]*]*&quot;rnrnI am assuming that in your definition [qchar] means any 1 character except &quot; while [qchar]* means any character except &quot; repeated 0 or more times.rnrnCheersrnrnMark</description>
		<content:encoded><![CDATA[<p>Hi, I was looking round to see how the CSV format is described and came across your post. I&#8217;m trying to parse a CSV file and I&#8217;m comparing my result to that of Excel. rnrnI agree with your EBNF description except that I noticed that Excel does produce &#8220;&#8221;"hello&#8221; in a CSV file if you type ["hello] (without the square brackets) in a cell. Therefore, I would change your description of atom to allow &#8220;&#8221; as the first two characters rather than forcing them to be preceded by [qchar]:rnrn   atom ::= [char]* | &#8220;[qchar]*[""[qchar]*]*&#8221;rnrnI am assuming that in your definition [qchar] means any 1 character except &#8221; while [qchar]* means any character except &#8221; repeated 0 or more times.rnrnCheersrnrnMark</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on XXTEA test vectors by Twylite</title>
		<link>http://www.crypt.co.za/post/27#comment-28</link>
		<dc:creator>Twylite</dc:creator>
		<pubDate>Mon, 19 Jan 2009 07:16:21 +0000</pubDate>
		<guid isPermaLink="false">http://www.crypt.co.za/post/27#comment-28</guid>
		<description>Hi meme,rnrnI used the reference implementation from Wheeler &amp; Needham&#039;s paper.  So long as you are running on a little-endian machine (e.g. x86) it should work.rnIf you are on a big-endian machine (e.g. Sun Sparc) you can convert the key and block to the appropriate representation using a function like this:rnrnunsigned long param_readU32L(unsigned char* buffer, unsigned long bufLen, unsigned long offset, unsigned long *result)rn{rn  unsigned char* p = 0;rn  // First check that the buffer + offset + 32 bits is valid.rn  if (bufLen&lt;offset +4) {rn    return 1;rn  }rnrn  // acquire unsigned char* p = buffer + offsetrn  p = buffer + offset;rn  *result = (*p) + (*(p+1) &lt;&lt; 8) + (*(p+2) &lt;&lt; 16)  + (*(p+3) &lt;&lt; 24);rnrn  return 0;rn}rnrnUse that on each 4-byte segment of the input key &amp; block, and the following function on each 4-byte segment of the output block:rnrnunsigned long param_writeU32L(unsigned char* buffer, unsigned long bufLen, unsigned long offset, unsigned long value)rn{rn  unsigned char* p = 0;rn  // First check that the buffer + offset + 16 bits is valid.rn  if (bufLen&lt;offset+4) {rn    return 1;rn  }rnrn  // acquire unsigned char* p = buffer + offsetrn  p = buffer + offset;rn  *p = (unsigned char)(value&amp;0x000000FF);rn  ++p;rn  *p = (unsigned char)((value&gt;&gt;8)&amp;0x000000FF);rn  ++p;rn  *p = (unsigned char)((value&gt;&gt;16)&amp;0x000000FF);rn  ++p;rn  *p = (unsigned char)((value&gt;&gt;24)&amp;0x000000FF);rnrn  return 0;rn}rnrnI&#039;ve never tested on a big-endian platform though, so YMMV.rnrnCheers&lt;/offset&gt;</description>
		<content:encoded><![CDATA[<p>Hi meme,rnrnI used the reference implementation from Wheeler &#038; Needham&#8217;s paper.  So long as you are running on a little-endian machine (e.g. x86) it should work.rnIf you are on a big-endian machine (e.g. Sun Sparc) you can convert the key and block to the appropriate representation using a function like this:rnrnunsigned long param_readU32L(unsigned char* buffer, unsigned long bufLen, unsigned long offset, unsigned long *result)rn{rn  unsigned char* p = 0;rn  // First check that the buffer + offset + 32 bits is valid.rn  if (bufLen<offset +4) {rn    return 1;rn  }rnrn  // acquire unsigned char* p = buffer + offsetrn  p = buffer + offset;rn  *result = (*p) + (*(p+1) << 8) + (*(p+2) << 16)  + (*(p+3) << 24);rnrn  return 0;rn}rnrnUse that on each 4-byte segment of the input key &#038; block, and the following function on each 4-byte segment of the output block:rnrnunsigned long param_writeU32L(unsigned char* buffer, unsigned long bufLen, unsigned long offset, unsigned long value)rn{rn  unsigned char* p = 0;rn  // First check that the buffer + offset + 16 bits is valid.rn  if (bufLen<offset+4) {rn    return 1;rn  }rnrn  // acquire unsigned char* p = buffer + offsetrn  p = buffer + offset;rn  *p = (unsigned char)(value&#038;0x000000FF);rn  ++p;rn  *p = (unsigned char)((value>>8)&#038;0x000000FF);rn  ++p;rn  *p = (unsigned char)((value>>16)&#038;0x000000FF);rn  ++p;rn  *p = (unsigned char)((value>>24)&#038;0x000000FF);rnrn  return 0;rn}rnrnI&#8217;ve never tested on a big-endian platform though, so YMMV.rnrnCheers</offset></p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on XXTEA test vectors by meme</title>
		<link>http://www.crypt.co.za/post/27#comment-27</link>
		<dc:creator>meme</dc:creator>
		<pubDate>Sun, 18 Jan 2009 09:15:47 +0000</pubDate>
		<guid isPermaLink="false">http://www.crypt.co.za/post/27#comment-27</guid>
		<description>can you send me the c code that works with little endian caus i can&#039;t work the c code from wikipedia with little endian.</description>
		<content:encoded><![CDATA[<p>can you send me the c code that works with little endian caus i can&#8217;t work the c code from wikipedia with little endian.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on XXTEA test vectors by Twylite</title>
		<link>http://www.crypt.co.za/post/27#comment-26</link>
		<dc:creator>Twylite</dc:creator>
		<pubDate>Tue, 28 Oct 2008 15:04:35 +0000</pubDate>
		<guid isPermaLink="false">http://www.crypt.co.za/post/27#comment-26</guid>
		<description>My bad, q = 6+52/n -- I should have said &quot;q uses&quot; instead of &quot;q =&quot;</description>
		<content:encoded><![CDATA[<p>My bad, q = 6+52/n &#8212; I should have said &#8220;q uses&#8221; instead of &#8220;q =&#8221;</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on XXTEA test vectors by Steve Davis</title>
		<link>http://www.crypt.co.za/post/27#comment-25</link>
		<dc:creator>Steve Davis</dc:creator>
		<pubDate>Tue, 28 Oct 2008 14:59:16 +0000</pubDate>
		<guid isPermaLink="false">http://www.crypt.co.za/post/27#comment-25</guid>
		<description>Thanks for that extra info :) --yes, I am receiving strings in NBO but I just  checked an x86 architecture and indeed the results are little-endian on that. One question - isn&#039;t (according to the reference implementation) the number of rounds q = 6+52/n rather than either 52/n or 52/(n+1)? Is that a typo on your part or have I got another issue here!</description>
		<content:encoded><![CDATA[<p>Thanks for that extra info :) &#8211;yes, I am receiving strings in NBO but I just  checked an x86 architecture and indeed the results are little-endian on that. One question &#8211; isn&#8217;t (according to the reference implementation) the number of rounds q = 6+52/n rather than either 52/n or 52/(n+1)? Is that a typo on your part or have I got another issue here!</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on XXTEA test vectors by Twylite</title>
		<link>http://www.crypt.co.za/post/27#comment-24</link>
		<dc:creator>Twylite</dc:creator>
		<pubDate>Tue, 28 Oct 2008 07:48:57 +0000</pubDate>
		<guid isPermaLink="false">http://www.crypt.co.za/post/27#comment-24</guid>
		<description>Thanks for the comment.  These are the notes from my code on the potential incompatibilities between XXTEA implementations:rnrn--rnWarning #1: Incompatible implementations existrnThere are several implementations of XXTEA in circulation that do not agree with the reference version.  The calculation of q (number of rounds) uses 52/(n+1) instead of 52/n, and the upper limit of the &quot;for p&quot; loop is n rather than n-1.  One Java implementation even appends the block length to the block before encryption, resulting in a ciphertext longer than the plaintext. Such implementations are not compatible with the reference implementation, nor with this implementation.rnrnWarning #2: Platform incompatibilitiesrnThe reference implementation is given in C and uses signed long arrays (long*) for the key and data.  If care is not taken in the conversion of keys and data from binary (unsigned char*) to long* -- for example by just using a type cast -- then keys, plaintext and ciphertext on a little endian platform (e.g. x86) will not be compatible with the same binary values used on a big endian platform (e.g. sparc). This implementation assumes that binary keys and data should be interpreted as 32-bit little endian values, and will do that consistently on all platforms.rn--rnrnIt is not clear what endianness the original authors assumed, but there are hints that their code was intended to run on Linux/x86 (little endian).  In addition most of the implementations I have encountered assume little endian.rnrnI have calculated some common &quot;wrong answers&quot; (according to the reference implementation) for key=0 plaintext=0:rnrnReference implementation (q=52/n ; little endian): ab043705 808c5d57rnq = 52/(n+1): 4de1bc5b 62352db0rnbig endian: 053704ab 575d8c80rnbig endian ; q = 52/(n+1): 5bbce14d b02d3562</description>
		<content:encoded><![CDATA[<p>Thanks for the comment.  These are the notes from my code on the potential incompatibilities between XXTEA implementations:rnrn&#8211;rnWarning #1: Incompatible implementations existrnThere are several implementations of XXTEA in circulation that do not agree with the reference version.  The calculation of q (number of rounds) uses 52/(n+1) instead of 52/n, and the upper limit of the &#8220;for p&#8221; loop is n rather than n-1.  One Java implementation even appends the block length to the block before encryption, resulting in a ciphertext longer than the plaintext. Such implementations are not compatible with the reference implementation, nor with this implementation.rnrnWarning #2: Platform incompatibilitiesrnThe reference implementation is given in C and uses signed long arrays (long*) for the key and data.  If care is not taken in the conversion of keys and data from binary (unsigned char*) to long* &#8212; for example by just using a type cast &#8212; then keys, plaintext and ciphertext on a little endian platform (e.g. x86) will not be compatible with the same binary values used on a big endian platform (e.g. sparc). This implementation assumes that binary keys and data should be interpreted as 32-bit little endian values, and will do that consistently on all platforms.rn&#8211;rnrnIt is not clear what endianness the original authors assumed, but there are hints that their code was intended to run on Linux/x86 (little endian).  In addition most of the implementations I have encountered assume little endian.rnrnI have calculated some common &#8220;wrong answers&#8221; (according to the reference implementation) for key=0 plaintext=0:rnrnReference implementation (q=52/n ; little endian): ab043705 808c5d57rnq = 52/(n+1): 4de1bc5b 62352db0rnbig endian: 053704ab 575d8c80rnbig endian ; q = 52/(n+1): 5bbce14d b02d3562</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on XXTEA test vectors by Steve Davis</title>
		<link>http://www.crypt.co.za/post/27#comment-23</link>
		<dc:creator>Steve Davis</dc:creator>
		<pubDate>Mon, 27 Oct 2008 22:23:40 +0000</pubDate>
		<guid isPermaLink="false">http://www.crypt.co.za/post/27#comment-23</guid>
		<description>If instead of ...rnab043705 808c5d57rn... i get ...rn053704ab 575d8c80rn...what does this say about endian-ness? Which is actually more correct?</description>
		<content:encoded><![CDATA[<p>If instead of &#8230;rnab043705 808c5d57rn&#8230; i get &#8230;rn053704ab 575d8c80rn&#8230;what does this say about endian-ness? Which is actually more correct?</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Hype, bad judgement and safe management by Reg</title>
		<link>http://www.crypt.co.za/post/59#comment-36</link>
		<dc:creator>Reg</dc:creator>
		<pubDate>Thu, 28 Aug 2008 16:30:03 +0000</pubDate>
		<guid isPermaLink="false">http://www.crypt.co.za/post/59#comment-36</guid>
		<description>Interesting.rnrnAren&#039;t you glad you studied psychology?rnrnPeople need fads.  Fads make the innovators feel important, imitators knowledgeable and the critics wise.  Whether or not they work is immaterial.rnrnAs for technologies and methodologies: the less knowledge resources they require to work the more likely they are to work once the fad is past.rnrnTrue Solution Value = (1/Real Knowledge Required  * Fad Ubiquity/Years in service)  * Actual Business Benefit</description>
		<content:encoded><![CDATA[<p>Interesting.rnrnAren&#8217;t you glad you studied psychology?rnrnPeople need fads.  Fads make the innovators feel important, imitators knowledgeable and the critics wise.  Whether or not they work is immaterial.rnrnAs for technologies and methodologies: the less knowledge resources they require to work the more likely they are to work once the fad is past.rnrnTrue Solution Value = (1/Real Knowledge Required  * Fad Ubiquity/Years in service)  * Actual Business Benefit</p>
]]></content:encoded>
	</item>
</channel>
</rss>

