In Flash, the error is ReferenceError: Error: 1069.

I took another look and it looks like the problem is the bracketed access to 
the BinaryData.

The code s[ i / 8 ] needs to be changed to either s.readByteAt(i/8) or 
s.array[i/8].

Making either of these changes fixed the Flash error, but did not fix the JS 
error:
expected 80338e79d2ca9b9c090ebaaa2ef293c7 but was: 
996f93cb21f81b54962909fd0ea18074

I’m guessing that the problem is related to the comment here in the JS MD5 
implementation:

                * Add integers, wrapping at 2^32. This uses 16-bit operations 
internally
                * to work around bugs in some JS interpreters.

I think part of the problem is that JS only has 32 bit ints. I did not follow 
this article completely, but this might shed some light:
http://blog.vjeux.com/2013/javascript/conversion-from-uint8-to-int8-x-24.html 
<http://blog.vjeux.com/2013/javascript/conversion-from-uint8-to-int8-x-24.html>

Harbs

> On Jun 22, 2018, at 9:22 AM, Alex Harui <aha...@adobe.com.INVALID> wrote:
> 
> On 6/21/18, 11:20 AM, "Harbs" <harbs.li...@gmail.com> wrote:
> 
>    The MD5 test actually failed in Flash too. Although the error was 
> different.
> 
>    I’m not sure why it was failing. I’m pretty sure the code was the same as 
> the Flex version with ByteArray swapped for BinaryData.
> 
> Even more bothersome.  We really should dig deeper on this.  We can't have 
> other people's business logic have similar issues.  Any volunteers?
> 
> -Alex
> 
> 

Reply via email to