optimizations; added sha1_string() and changed sha1() to expect an array of bytes;
This commit is contained in:
1 parent
9cda43b0fb
commit
dab9151c67
2 files changed
+22
-12
No files matched your search
@@ -10,7 +10,7 @@
|
|||||||
{
|
{
|
||||||
sha1_profile();
|
sha1_profile();
|
||||||
if ( sha1_verify() )
|
if ( sha1_verify() )
|
||||||
document.getElementById('result').innerHTML = sha1("abcde");
|
document.getElementById('result').innerHTML = sha1_string("abcde");
|
||||||
else
|
else
|
||||||
document.getElementById('result').innerHTML = "Error!!!";
|
document.getElementById('result').innerHTML = "Error!!!";
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -36,9 +36,9 @@ function num_to_big_endian_64(num)
|
|||||||
function bytes_to_big_endian_32(array)
|
function bytes_to_big_endian_32(array)
|
||||||
{
|
{
|
||||||
var result = [];
|
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;
|
return result;
|
||||||
}
|
}
|
||||||
@@ -64,10 +64,12 @@ function to_hex(x)
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
function sha1(text)
|
function sha1(byte_array)
|
||||||
{
|
{
|
||||||
// get text into byte array
|
// copy array
|
||||||
var message = str_to_bytes(text);
|
var message = byte_array.slice();
|
||||||
|
|
||||||
|
// store message size for later use
|
||||||
var message_size_in_bits = message.length * 8;
|
var message_size_in_bits = message.length * 8;
|
||||||
|
|
||||||
// Initialize variables:
|
// Initialize variables:
|
||||||
@@ -111,8 +113,7 @@ function sha1(text)
|
|||||||
var c = h2;
|
var c = h2;
|
||||||
var d = h3;
|
var d = h3;
|
||||||
var e = h4;
|
var e = h4;
|
||||||
var f = 0;
|
var f, k, temp;
|
||||||
var k = 0;
|
|
||||||
|
|
||||||
// Main loop:
|
// Main loop:
|
||||||
for (var i = 0; i < 80; i++)
|
for (var i = 0; i < 80; i++)
|
||||||
@@ -138,7 +139,7 @@ function sha1(text)
|
|||||||
k = 0xca62c1d6;
|
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;
|
e = d;
|
||||||
d = c;
|
d = c;
|
||||||
c = rol(b,30);
|
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);
|
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()
|
function sha1_verify()
|
||||||
{
|
{
|
||||||
return Boolean(
|
return Boolean(
|
||||||
(sha1("The quick brown fox jumps over the lazy dog") == "2fd4e1c67a2d28fced849ee1bb76e7391b93eb12") &&
|
(sha1_string("The quick brown fox jumps over the lazy dog") == "2fd4e1c67a2d28fced849ee1bb76e7391b93eb12") &&
|
||||||
(sha1("") == "da39a3ee5e6b4b0d3255bfef95601890afd80709")
|
(sha1_string("") == "da39a3ee5e6b4b0d3255bfef95601890afd80709")
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -170,6 +180,6 @@ function sha1_profile()
|
|||||||
{
|
{
|
||||||
var text = "blah";
|
var text = "blah";
|
||||||
for (var i = 0; i < 250; i++) {
|
for (var i = 0; i < 250; i++) {
|
||||||
text = sha1(text);
|
text = sha1_string(text);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
Reference in new issue
Block a user