initial commit for GitHub
This commit is contained in:
34
test/sha256_test_brute_force.js
Normal file
34
test/sha256_test_brute_force.js
Normal file
@@ -0,0 +1,34 @@
|
||||
/**
|
||||
* Test SHA-256 using an ad-hoc iterative technique.
|
||||
* This uses a string buffer which has n characters on the nth iteration.
|
||||
* Each iteration, the buffer is hashed and the hash is converted to a string.
|
||||
* The first two characters of the string are prepended to the buffer, then the
|
||||
* last character of the buffer is removed. This way, neither the beginning nor
|
||||
* the end of the buffer is fixed.
|
||||
*
|
||||
* The hashes from each output step are also hashed together into one final hash.
|
||||
* This is compared against a final hash which was computed with SSL.
|
||||
*/
|
||||
|
||||
new sjcl.test.TestCase("SHA-256 iterative", function (cb) {
|
||||
if (!sjcl.hash.sha256) {
|
||||
this.unimplemented();
|
||||
cb && cb();
|
||||
return;
|
||||
}
|
||||
|
||||
var toBeHashed = "", cumulative = new sjcl.hash.sha256(), hash, thiz=this;
|
||||
browserUtil.cpsIterate(function (i, cbb) {
|
||||
for (var n=100*i; n<100*(i+1); n++) {
|
||||
hash = sjcl.hash.sha256.hash(toBeHashed);
|
||||
hash = sjcl.codec.hex.fromBits(hash);
|
||||
cumulative.update(hash);
|
||||
toBeHashed = (hash.substring(0,2)+toBeHashed).substring(0,n+1);
|
||||
}
|
||||
cbb && cbb();
|
||||
}, 0, 10, true, function () {
|
||||
hash = sjcl.codec.hex.fromBits(cumulative.finalize());
|
||||
thiz.require(hash === "f305c76d5d457ddf04f1927166f5e13429407049a5c5f29021916321fcdcd8b4");
|
||||
cb && cb();
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user