मैं दो MD5 पुस्तकालयों के प्रदर्शन की तुलना कर रहा हूँ। जब मैं उन दोनों को एक स्ट्रिंग भेजता हूं, तो वे वही हैश लौटाते हैं:

     Hashing data with 'md5' library...
             Hash: d8b1e68f2f36743cdf302ed36f9347dc
             Duration: 0.003s

     Hashing data with 'create-hash' library...
             Hash: d8b1e68f2f36743cdf302ed36f9347dc
             Duration: 0.003s

हालांकि, जब मैं उन्हें एक ही UInt8Array भेजता हूं, तो वे मुझे अलग-अलग हैश देते हैं:

     Hashing data with 'md5' library...
             Hash: 77fcf76d3f8c6a0f685f784d7ca6c642
             Duration: 0.001s

     Hashing data with 'create-hash' library...
             Hash: 0ee0646c1c77d8131cc8f4ee65c7673b
             Duration: 0s

ऐसा क्यों होता है?

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

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

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

    hashData('md5', hashWithMD5, data)
    hashData('create-hash', hashWithCreateHash, data)
}

console.log('*** Running hashes on strings... *** \n')
runHashes("I want you to hash me...")

console.log('*** Running hashes on UInt8Array... *** \n')
runHashes(new Uint8Array([1, 2, 3, 4, 5, 6, 7, 8]))
1
ThisRestlessPilgrim 21 नवम्बर 2019, 23:09

1 उत्तर

सबसे बढ़िया उत्तर

md5 मॉड्यूल API दस्तावेज़ों के आधार पर, हैशिंग फ़ंक्शन या तो एक स्वीकार करता है String या एक BufferUin8Array का आपका इनपुट न तो है, इसलिए मैं अनुमान लगा रहा हूं कि सही ढंग से टाइप किए गए इनपुट दिए गए अच्छी तरह से परिभाषित आउटपुट की तुलना में हैशिंग का व्यवहार अपेक्षाकृत अपरिभाषित होगा।

0
jakemingolla 21 नवम्बर 2019, 23:49