我需要在浏览器上使用crypto.pbkdf2。
我使用browserify来创建我的javascript文件。当迭代次数大于1000时,异步PBKDF2函数会完全冻结我的浏览器。
var crypto = require('crypto');
var iterations = 10;
// var iterations = 8192; // uncomment to freeze the browser
crypto.pbkdf2('password', 'salt', iterations, 32, 'sha256', function (error, key) {
console.log(key.toString('hex'));
});
如何使用browserify运行节点加密模块?
编辑:
这里是browserify创建的代码,用于声明pbkdf2
exports.pbkdf2 = pbkdf2
function pbkdf2 (password, salt, iterations, keylen, digest, callback) {
if (typeof digest === 'function') {
callback = digest
digest = undefined
}
if (typeof callback !== 'function') {
throw new Error('No callback provided to pbkdf2')
}
var result = pbkdf2Sync(password, salt, iterations, keylen, digest)
setTimeout(function () {
callback(undefined, result)
})
}
答案 0 :(得分:1)
要解决我的问题,请使用npm中的pbkdf2模块:https://github.com/crypto-browserify/pbkdf2
npm install --save pbkdf2
此软件包实现browser version并代理node version
根据您要访问的目标(浏览器或节点),您的bundler(browserify或webpack)将加载相应的版本。
var pbkdf2 = require('pbkdf2');
pbkdf2.pbkdf2(password, salt, iterations, keylen, digest, function(error, key) {
...
});