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>>*
