optimizations; added sha1_string() and changed sha1() to expect an array of bytes;

This commit is contained in:
swaits committed 2010-11-30 16:34:11 -08:00
1 parent 9cda43b0fb
commit dab9151c67
2 files changed
+22 -12

No files matched your search

+1 -1
View File
@@ -10,7 +10,7 @@
{
sha1_profile();
if ( sha1_verify() )
document.getElementById('result').innerHTML = sha1("abcde");
document.getElementById('result').innerHTML = sha1_string("abcde");
else
document.getElementById('result').innerHTML = "Error!!!";
}
+21 -11
View File
@@ -36,9 +36,9 @@ function num_to_big_endian_64(num)
function bytes_to_big_endian_32(array)
{
var result = [];
for (var i = 0; i < (array.length/4); i++)
for (var i = 0; i < array.length; i += 4)
{
result.push((array[i*4+0] << 24) | (array[i*4+1] << 16) | (array[i*4+2] << 8) | array[i*4+3]);
result.push((array[i] << 24) | (array[i+1] << 16) | (array[i+2] << 8) | array[i+3]);
};
return result;
}
@@ -64,10 +64,12 @@ function to_hex(x)
);
}
function sha1(text)
function sha1(byte_array)
{
// get text into byte array
var message = str_to_bytes(text);
// copy array
var message = byte_array.slice();
// store message size for later use
var message_size_in_bits = message.length * 8;
// Initialize variables:
@@ -111,8 +113,7 @@ function sha1(text)
var c = h2;
var d = h3;
var e = h4;
var f = 0;
var k = 0;
var f, k, temp;
// Main loop:
for (var i = 0; i < 80; i++)
@@ -138,7 +139,7 @@ function sha1(text)
k = 0xca62c1d6;
}
var temp = (rol(a,5) + f + e + k + w[i]) & 0xffffffff;
temp = (rol(a,5) + f + e + k + w[i]) & 0xffffffff;
e = d;
d = c;
c = rol(b,30);
@@ -158,11 +159,20 @@ function sha1(text)
return to_hex(h0) + to_hex(h1) + to_hex(h2) + to_hex(h3) + to_hex(h4);
}
function sha1_string(str)
{
// get text into byte array
var message = str_to_bytes(str);
// perform SHA-1
return sha1(message);
}
function sha1_verify()
{
return Boolean(
(sha1("The quick brown fox jumps over the lazy dog") == "2fd4e1c67a2d28fced849ee1bb76e7391b93eb12") &&
(sha1("") == "da39a3ee5e6b4b0d3255bfef95601890afd80709")
(sha1_string("The quick brown fox jumps over the lazy dog") == "2fd4e1c67a2d28fced849ee1bb76e7391b93eb12") &&
(sha1_string("") == "da39a3ee5e6b4b0d3255bfef95601890afd80709")
);
}
@@ -170,6 +180,6 @@ function sha1_profile()
{
var text = "blah";
for (var i = 0; i < 250; i++) {
text = sha1(text);
text = sha1_string(text);
};
}