react / wstein / node_modules / browserify / node_modules / crypto-browserify / node_modules / browserify-aes / EVP_BytesToKey.js
80542 viewsvar md5 = require('create-hash/md5')1module.exports = EVP_BytesToKey2function EVP_BytesToKey (password, keyLen, ivLen) {3if (!Buffer.isBuffer(password)) {4password = new Buffer(password, 'binary')5}6keyLen = keyLen / 87ivLen = ivLen || 08var ki = 09var ii = 010var key = new Buffer(keyLen)11var iv = new Buffer(ivLen)12var addmd = 013var md_buf14var i15var bufs = []16while (true) {17if (addmd++ > 0) {18bufs.push(md_buf)19}20bufs.push(password)21md_buf = md5(Buffer.concat(bufs))22bufs = []23i = 024if (keyLen > 0) {25while (true) {26if (keyLen === 0) {27break28}29if (i === md_buf.length) {30break31}32key[ki++] = md_buf[i]33keyLen--34i++35}36}37if (ivLen > 0 && i !== md_buf.length) {38while (true) {39if (ivLen === 0) {40break41}42if (i === md_buf.length) {43break44}45iv[ii++] = md_buf[i]46ivLen--47i++48}49}50if (keyLen === 0 && ivLen === 0) {51break52}53}54for (i = 0; i < md_buf.length; i++) {55md_buf[i] = 056}57return {58key: key,59iv: iv60}61}626364