PBKDF2
JavaScript performance comparison
Info
PBKDF2 (hmacSHA1) for JavaScript
Compares the PBKDF2 methods of the Stanford Javascript Crypto Library with the ones from CryptoJS and Anandam.
Preparation code
<script src="http://anandam.name/pbkdf2/sha1.js">
</script>
<script src="http://anandam.name/pbkdf2/pbkdf2.js">
</script>
<script src="//raw.github.com/bitwiseshiftleft/sjcl/version-0.8/sjcl.js">
</script>
<script src="//raw.github.com/bitwiseshiftleft/sjcl/master/core/sha1.js">
</script>
<script src="//crypto-js.googlecode.com/svn/tags/3.1.2/build/rollups/pbkdf2.js">
</script>
<script>
var hmacSHA1 = function(key) {
var hasher = new sjcl.misc.hmac(key, sjcl.hash.sha1);
this.encrypt = function() {
return hasher.encrypt.apply(hasher, arguments);
};
};
// from http://stackoverflow.com/questions/3745666/
function hex2a(hex) {
var str = '';
for (var i = 0; i < hex.length; i += 2)
str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));
return str;
}
var iterations = 500;
var password = 'password';
var hexSalt = '29EEE7AA9C0E9315';
var keySizeBits = 256;
var sjclSalt = sjcl.codec.hex.toBits(hexSalt);
var cryptoSalt = CryptoJS.enc.Hex.parse(hexSalt);
var anandamSalt = hex2a(hexSalt);
</script>
Preparation code output
Test runner
Warning! For accurate results, please disable Firebug before running the tests. (Why?)
Java applet disabled.
| Test | Ops/sec | |
|---|---|---|
SJCL 0.8 |
|
pending… |
CryptoJS 3.1.2 |
|
pending… |
Anandam 1.4 |
|
pending… |
Compare results of other browsers
Revisions
You can edit these tests or add even more tests to this page by appending /edit to the URL. Here’s a list of current revisions for this page:
- Revision 1: published by Joscha Feth
- Revision 2: published
- Revision 4: published
- Revision 5: published
- Revision 6: published
- Revision 7: published
2 comments
There is a JSFiddle containing the tests: http://jsfiddle.net/joscha/rz6yu/
Clickable link for the JSFiddle