sha256 (v50)

Revision 50 of this benchmark created by ICKX on


Description

[1]. Same as original, but processing ~200Kb of preencoded text. [2]. [update] Using ASCII chrs, no UTF8 encoding.

Preparation HTML

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<script src="https://rawgithub.com/alexweber/jquery.sha256/master/jquery.sha256.js" type="text/javascript"></script>
<script src="http://www.bichlmeier.info/sha256.js"></script>
<script src="http://www.webtoolkit.info/djs/webtoolkit.sha256.js"></script>
<script src="http://www.movable-type.co.uk/scripts/utf8.js"></script>
<script src="http://www.movable-type.co.uk/scripts/sha256.js"></script>
<script src="http://crypto-js.googlecode.com/svn/tags/3.1.2/build/rollups/sha256.js"></script>
<script src="http://crypto.stanford.edu/sjcl/sjcl.js"></script>
<script src="http://vibornoff.com/asmcrypto.js"></script>

<script>
  var digest;
</script>
<script>
randomStr = function (m) {
    var ascii =
        "\000\001\002\003\004\005\006\007\010\011\012\013\014\015\016\017" +
        "\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" +
        "!\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^" +
        "_`abcdefghijklmnopqrstuvwxyz{|}~\177\200\201\202\203\204\205\206" +
        "\207\210\211\212\213\214\215\216\217\220\221\222\223\224\225\226" +
        "\227\230\231\232\233\234\235\236\237\240\241\242\243\244\245\246" +
        "\247\250\251\252\253\254\255\256\257\260\261\262\263\264\265\266" +
        "\267\270\271\272\273\274\275\276\277\300\301\302\303\304\305\306" +
        "\307\310\311\312\313\314\315\316\317\320\321\322\323\324\325\326" +
        "\327\330\331\332\333\334\335\336\337\340\341\342\343\344\345\346" +
        "\347\350\351\352\353\354\355\356\357\360\361\362\363\364\365\366" +
        "\367\370\371\372\373\374\375\376\377";
        var m = m || 255; s = '';
        for (var i=0; i < m; i++) { s += ascii.charAt((Math.random()*0xFF)|0); }
        return s;
};
</script>

Setup

var SIZE = 200 * 1024; // 200K
    /*
    var chunk = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus in risus non augue vestibulum semper. Nullam feugiat tortor sit amet dolor venenatis ultricies. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Pellentesque imperdiet ullamcorper ullamcorper. Aliquam eget nunc a diam dapibus ultricies. In hac habitasse platea dictumst. Curabitur nec tortor nibh, fermentum molestie massa. Vestibulum volutpat gravida nisl, vitae viverra eros bibendum a. Vestibulum sed felis arcu, et volutpat leo. Praesent semper, nibh et suscipit auctor, magna enim lacinia diam, id tristique arcu nunc at odio. Nunc vitae est risus, nec placerat velit. Ut rutrum fringilla consectetur. Fusce rutrum dui aliquet ligula suscipit aliquam. Mauris tincidunt, lacus ut suscipit sodales, justo magna accumsan justo, id tristique massa odio semper enim.';
    */
    
    var chunk = randomStr(SIZE);
    var input = chunk;
    //var input = utf8Encode(chunk);
    
    /*
    while (input.length < SIZE) input += chunk;
    input = utf8Encode(input);
    */
    
    var buffer = new Uint8Array(input.length);
    for (var i=0; i<input.length; i++) buffer[i] = input.charCodeAt(i);
    
    function utf8Encode(str) {
        return window.unescape(window.encodeURIComponent(str));
    }

Test runner

Ready to run.

Testing in
TestOps/sec
bichlmeier
digest = sha256_digest(input);
ready
webtoolkit
digest = SHA256(input);
ready
movable-type.co.uk
digest = Sha256.hash(input);
ready
Weber
digest = $.sha256(input);
ready
sjcl
digest = sjcl.hash.sha256.hash(input);
ready
CryptoJS
digest = CryptoJS.SHA256(input);
ready
Asm.js (string)
digest = asmCrypto.SHA256.hex(input);
ready
Asm.js (buffer)
digest = asmCrypto.SHA256.hex(buffer);
ready

Revisions

You can edit these tests or add more tests to this page by appending /edit to the URL.