diff --git a/EVP_BytesToKey.js b/EVP_BytesToKey.js index fc298d9..c8f87f4 100644 --- a/EVP_BytesToKey.js +++ b/EVP_BytesToKey.js @@ -1,39 +1,35 @@ -var createHash = require('create-hash'); -module.exports = function evp(password, salt, keyLen) { - keyLen = keyLen/8; - var ki = 0; - var ii = 0; - var key = new Buffer(keyLen); - var addmd = 0; - var md, md_buf; - var i; - while (true) { - md = createHash('md5'); - if(addmd++ > 0) { - md.update(md_buf); +var createHash = require('create-hash') + +module.exports = function evp (password, salt, keyLen) { + keyLen = keyLen / 8 + + var offset = 0 + var key = new Buffer(keyLen) + var buffer + + while (keyLen > 0) { + var hash = createHash('md5') + + if (buffer) { + hash.update(buffer) } - md.update(password); - md.update(salt); - md_buf = md.digest(); - i = 0; - if(keyLen > 0) { - while(true) { - if(keyLen === 0) { - break; - } - if(i === md_buf.length) { - break; - } - key[ki++] = md_buf[i++]; - keyLen--; - } + + hash.update(password) + hash.update(salt) + buffer = hash.digest() + + for (var i = 0; i < buffer.length; ++i) { + if (keyLen === 0) break + + key[offset] = buffer[i] + + keyLen-- + offset++ } - if(keyLen === 0) { - break; - } - } - for(i=0;i