MD5库的结果不同

这个无情的朝圣者

我需要使用MD5哈希一些数据。我想测试差异库的性能。但是,我注意到我正在获取相同数据的不同哈希值,具体取决于所使用的库:

Generating data...

Hashing data with 'md5' library...
         Hash: 1b37c84ebc8426e19d3b1797b6e320c6
         Duration: 0.848s

Hashing data with 'object-hash' library...
         Hash: f046296e8016b5632e6a1d1ebc885892
         Duration: 0.032s

Hashing data with 'create-hash' library...
         Hash: 1b37c84ebc8426e19d3b1797b6e320c6
         Duration: 0.023s

我希望两个库都显示相同的哈希值。有任何想法吗?我的代码如下...

const generateData = () => {
    console.log('Generating data...')
    let data = "";
    for (let i = 0; i < 1000000; i++) {
        data += "1234567890";
    }
    console.log()    
    return data;
}

const convertToUInt8Array = (s) => {
    var result = [];
    for(var i = 0; i < s.length; i+=2)
    {
        result.push(parseInt(s.substring(i, i + 2), 16));
    }
    result = Uint8Array.from(result)
    return result;
}

const hashData = (name, hashingFunction, data) => {
    console.log(`Hashing data with '${name}' library...`)
    const start = new Date()
    const hash = hashingFunction(data)
    const end = new Date()
    console.log(`\t Hash: ${hash}`)
    const duration = (end - start) / 1000
    console.log(`\t Duration: ${duration}s`)
    console.log()
}

const hashWithMD5 = (data) => {
    const md5 = require('md5')
    return md5(data)
}

const hashWithObjectHash = (data) => {
    const objectHash = require('object-hash')
    return objectHash.MD5(data)
} 

const hashWithCreateHash = (data) => {
    const createHash = require('create-hash')
    const hash = createHash('md5')
    hash.update(data)
    return hash.digest('hex')
}

const data = generateData()
hashData('md5', hashWithMD5, data)
hashData('object-hash', hashWithObjectHash, data)
hashData('create-hash', hashWithCreateHash, data)
帕特里克·罗伯茨

object-hash散列对象,而不是字符串值。实施预规划

'string:' + string.length + ':'

输入字符串并对其进行MD5哈希处理。您可以通过修改hashWithCreateHash以生成相同输入的哈希值来确认这一点

const hashWithCreateHash = (data) => {
    const createHash = require('create-hash')
    const hash = createHash('md5')
    hash.update(`string:${data.length}:${data}`) // instead of hash.update(data)
    return hash.digest('hex')
}
Hashing data with 'create-hash' library...
         Hash: f046296e8016b5632e6a1d1ebc885892
         Duration: 0.023s

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

MD5结果不同

来自分类Dev

NodeJS使用crypo计算MD5哈希的结果不同

来自分类Dev

DigestUtils和MessageDigest之间的MD5结果不同

来自分类Dev

MD5在C#和Java之间生成不同的结果

来自分类Dev

为什么我的命令行哈希与在线MD5哈希结果不同?

来自分类Dev

MD5哈希值不同

来自分类Dev

MD5散列不同的值

来自分类Dev

为什么两次通用编解码器md5的结果都不同

来自分类Dev

在计算可序列化对象与字符串的 md5 时获得不同的结果

来自分类Dev

R库中MD5哈希的区别-序列化对象的MD5

来自分类Dev

登录哈希 md5 与数据库 md5 哈希密码不匹配

来自分类Dev

MD5返回不同的哈希码-Python

来自分类Dev

对于不同的PDF,MD5始终相同

来自分类Dev

MD5对于相同的输入返回不同的值

来自分类Dev

是否有不同类型的MD5总和生成?

来自分类Dev

对于不同的PDF,MD5始终相同

来自分类Dev

apache Maven使用不同的md5是否正常?

来自分类Dev

重建后,exe / dll的MD5不同

来自分类Dev

Java和C#之间不同的MD5

来自分类Dev

php md5 不同于 python

来自分类Dev

MD5()函数在哪个库中?

来自分类Dev

将md5哈希插入MySQL数据库

来自分类Dev

使用md5密码查询MySql数据库

来自分类Dev

MD5()函数在哪个库中?

来自分类Dev

如何包含openssl / md5库的目标文件?

来自分类Dev

md5(stringa + stringb ...)和md5(stringa)+ md5(stringb)之间的碰撞机会有何不同?

来自分类Dev

Unix md5是否与python的hashlib.md5不同?

来自分类Dev

Python hashlib md5与bash md5sum相比,输出不同且速度较慢?

来自分类Dev

如何为同一个字符串获得两个不同的 md5 哈希结果?