I locally converted MD5Stream to use BinaryData (so it could run in a JS 
environment) instead of ByteArray and I got the wrong results for the MD5 hash.

> On Nov 27, 2017, at 2:01 PM, Piotr Zarzycki <[email protected]> wrote:
> 
> Hi Harbs,
> 
> What do you mean that is doesn't work ? We are using MD5Stream in the
> MD5CompareUtil [1] of the installer and it seems to be working pretty well.
> Do you get some strange results ?
> 
> [1]
> https://github.com/apache/flex-utilities/blob/develop/flex-installer/installer/src/org/apache/flex/packageflexsdk/util/MD5CompareUtil.as
>  
> <https://github.com/apache/flex-utilities/blob/develop/flex-installer/installer/src/org/apache/flex/packageflexsdk/util/MD5CompareUtil.as>
> 
> Thanks, Piotr
> 
> 
> 2017-11-27 12:54 GMT+01:00 Harbs <[email protected] 
> <mailto:[email protected]>>:
> 
>> It turns out that MD5 is completely broken.
>> 
>> My theory was that it should migrate from the Flash version and BinaryData
>> should have been a drop-in replacement or ByteArray.
>> 
>> Well, the theory didn’t work out and I spent a long time trying to figure
>> out why it’s broken. It seems to be broken in both Flash and JS runtimes.
>> For kicks, I tried the MD5Stream version as well and that didn’t work
>> either.
>> 
>> I tried various combinations with endians and that did not seem to be like
>> it. I’m pretty stumped.
>> 
>> I did manage to successfully incorporate a JS implementation of MD5 in a
>> Royale class[1] in my project, so I’m personally not stuck on this issue.
>> 
>> Anyone interested in looking at this?
>> 
>> Harbs
>> 
>> [1]https://github.com/blueimp/JavaScript-MD5 
>> <https://github.com/blueimp/JavaScript-MD5> <https://github.com/blueimp/ 
>> <https://github.com/blueimp/>
>> JavaScript-MD5>
>>> On Nov 27, 2017, at 1:18 PM, [email protected] <mailto:[email protected]> 
>>> wrote:
>>> 
>>> This is an automated email from the ASF dual-hosted git repository.
>>> 
>>> harbs pushed a commit to branch develop
>>> in repository https://gitbox.apache.org/repos/asf/royale-asjs.git 
>>> <https://gitbox.apache.org/repos/asf/royale-asjs.git>
>>> 
>>> 
>>> The following commit(s) were added to refs/heads/develop by this push:
>>>    new ae6da3c  Added failing test for MD5
>>> ae6da3c is described below
>>> 
>>> commit ae6da3c1bb3f663c641153b7b3b60f6d8a90b54b
>>> Author: Harbs <[email protected] <mailto:[email protected]>>
>>> AuthorDate: Mon Nov 27 13:18:38 2017 +0200
>>> 
>>>   Added failing test for MD5
>>> ---
>>> .../src/main/royale/flexUnitTests/CoreTester.as    |  3 +-
>>> .../{CoreTester.as => core/MD5Test.as}             | 50
>> ++++++++++++++--------
>>> 2 files changed, 33 insertions(+), 20 deletions(-)
>>> 
>>> diff --git 
>>> a/manualtests/UnitTests/src/main/royale/flexUnitTests/CoreTester.as
>> b/manualtests/UnitTests/src/main/royale/flexUnitTests/CoreTester.as
>>> index 9af36e3..5ce4e9a 100644
>>> --- a/manualtests/UnitTests/src/main/royale/flexUnitTests/CoreTester.as
>>> +++ b/manualtests/UnitTests/src/main/royale/flexUnitTests/CoreTester.as
>>> @@ -27,7 +27,7 @@ package flexUnitTests
>>>        public function CoreTester()
>>>        {
>>>            // for JS, force-link these classes in the output
>>> -            var arr:Array = [StrandTesterTest, BinaryDataTesterTest];
>>> +            var arr:Array = [StrandTesterTest,
>> BinaryDataTesterTest,MD5Test];
>>>        }
>>> 
>>>        // in JS, using a class as a type won't include the class in
>>> @@ -39,5 +39,6 @@ package flexUnitTests
>>>        // better and allow you to define order.
>>>        public var strandTesterTest:StrandTesterTest;
>>>              public var binaryDataTesterTest:BinaryDataTesterTest;
>>> +             public var md5Test:MD5Test;
>>>    }
>>> }
>>> diff --git 
>>> a/manualtests/UnitTests/src/main/royale/flexUnitTests/CoreTester.as
>> b/manualtests/UnitTests/src/main/royale/flexUnitTests/core/MD5Test.as
>>> similarity index 52%
>>> copy from manualtests/UnitTests/src/main/royale/flexUnitTests/
>> CoreTester.as
>>> copy to manualtests/UnitTests/src/main/royale/flexUnitTests/
>> core/MD5Test.as
>>> index 9af36e3..20dc46f 100644
>>> --- a/manualtests/UnitTests/src/main/royale/flexUnitTests/CoreTester.as
>>> +++ b/manualtests/UnitTests/src/main/royale/flexUnitTests/
>> core/MD5Test.as
>>> @@ -16,28 +16,40 @@
>>> //  limitations under the License.
>>> //
>>> ////////////////////////////////////////////////////////////
>> ////////////////////
>>> -package flexUnitTests
>>> +package flexUnitTests.core
>>> {
>>> -     import flexUnitTests.core.*
>>> -
>>> -    [Suite]
>>> -    [RunWith("org.flexunit.runners.Suite")]
>>> -    public class CoreTester
>>> -    {
>>> -        public function CoreTester()
>>> +    import flexunit.framework.Assert;
>>> +
>>> +    import org.apache.royale.utils.MD5;
>>> +
>>> +    public class MD5Test
>>> +    {
>>> +        [Before]
>>> +        public function setUp():void
>>>        {
>>> -            // for JS, force-link these classes in the output
>>> -            var arr:Array = [StrandTesterTest, BinaryDataTesterTest];
>>>        }
>>> 
>>> -        // in JS, using a class as a type won't include the class in
>>> -        // the output since types are not chcked in JS.  It is when
>>> -        // the actual class is referenced that it will be included
>>> -        // in the output.
>>> -        // Is there a reason to use reflection to gather the set
>>> -        // of tests?  I would think an array of tests would wokr
>>> -        // better and allow you to define order.
>>> -        public var strandTesterTest:StrandTesterTest;
>>> -             public var binaryDataTesterTest:BinaryDataTesterTest;
>>> +        [After]
>>> +        public function tearDown():void
>>> +        {
>>> +        }
>>> +
>>> +        [BeforeClass]
>>> +        public static function setUpBeforeClass():void
>>> +        {
>>> +        }
>>> +
>>> +        [AfterClass]
>>> +        public static function tearDownAfterClass():void
>>> +        {
>>> +        }
>>> +
>>> +        [Test]
>>> +        public function testHash():void
>>> +        {
>>> +            Assert.assertEquals("Error testing foobaz", "
>> 80338e79d2ca9b9c090ebaaa2ef293c7",MD5.hash("foobaz"));
>>> +            Assert.assertEquals("Error testing bazfoo", "
>> b6a013d5e2c00f894584ad577249dbc7",MD5.hash("bazfoo"));
>>> +            Assert.assertEquals("Error testing password1234", "
>> bdc87b9c894da5168059e00ebffb9077",MD5.hash("password1234"));
>>> +        }
>>>    }
>>> }
>>> 
>>> --
>>> To stop receiving notification emails like this one, please contact
>>> ['"[email protected]" <[email protected]>'].
>> 
>> 
> 
> 
> -- 
> 
> Piotr Zarzycki
> 
> Patreon: *https://www.patreon.com/piotrzarzycki 
> <https://www.patreon.com/piotrzarzycki>
> <https://www.patreon.com/piotrzarzycki 
> <https://www.patreon.com/piotrzarzycki>>*

Reply via email to