Skip to content
This repository was archived by the owner on Sep 25, 2021. It is now read-only.
This repository was archived by the owner on Sep 25, 2021. It is now read-only.

Binary data hash error #36

Open
Open

Description

@qilx

I am trying to migrate from node-forge to blueimp-mp5 + web crypto api.
I created test script:

` var hex = 'B955EF8C83544AD74F803321866F005A';

var bytesStr = forge.util.hexToBytes(hex);

var data = bytesStr;
var h1 = forge.md.md5.create().start().update(data).digest().getBytes();
var h2 = md5(data, null, true);

console.log("H1: ", h1);
console.log("H2: ", h2);`

If 'data' is normal string, everything seems to work fine. But if 'data' is binary (like in example), hashes are different.
Am I doing something wrong or is it bug please?

Activity

  1. blueimp commented on Sep 6, 2020

    @blueimp
    Owner

    The input to the md5 function is always expected to be a string:
    https://github.com/blueimp/JavaScript-MD5/blob/master/README.md#api

    This project was developed as a cross-browser MD5 library that also works in NodeJS and was built before ArrayBuffer was widely available.

    If you need support for non-string inputs, you probably want to use a different implementation.

  2. qilx commented on Sep 11, 2020

    @qilx
    Author

    Here is example rewritten to use 'atob' to get input data. This function returns string.

        var data = atob('uVXvjINUStdPgDMhhm8AWg==');
        console.log("Data: ", data);
        var h1 = forge.md.md5.create().start().update(data).digest().toHex();
        var h2 = md5(data);
    
        console.log("H1: ", h1);
        console.log("H2: ", h2);
    
        var b1 = forge.md.md5.create().start().update(data).digest().getBytes();
        var b2 = md5(data, null, true);
    
        console.log("B1: ", b1);
        console.log("B2: ", b2);
    
  3. BinBashBanana commented on Apr 24, 2021

    @BinBashBanana

    You could use something like,

    function btou(data) {
    	var s = "";
    	for (var i = 0; i < data.length; i++) {
    		s += String.fromCharCode(data[i]);
    	}
    	return s;
    }

    Pass a Uint8Array to btou, and it will return a UTF-8 string.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions