Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
O
officejs
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
nexedi
officejs
Commits
5e4c414a
Commit
5e4c414a
authored
Jun 22, 2012
by
Tristan Cavelier
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Adding Sha256 library
parent
45ed5ca3
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
381 additions
and
0 deletions
+381
-0
OfficeJS/lib/jsSha2/docs/changes.txt
OfficeJS/lib/jsSha2/docs/changes.txt
+23
-0
OfficeJS/lib/jsSha2/docs/readme.txt
OfficeJS/lib/jsSha2/docs/readme.txt
+58
-0
OfficeJS/lib/jsSha2/license.txt
OfficeJS/lib/jsSha2/license.txt
+25
-0
OfficeJS/lib/jsSha2/sha2.js
OfficeJS/lib/jsSha2/sha2.js
+167
-0
OfficeJS/lib/jsSha2/sha256.js
OfficeJS/lib/jsSha2/sha256.js
+81
-0
OfficeJS/lib/jsSha2/tests/sha2_test.htm
OfficeJS/lib/jsSha2/tests/sha2_test.htm
+27
-0
No files found.
OfficeJS/lib/jsSha2/docs/changes.txt
0 → 100644
View file @
5e4c414a
12/21/2004 - version 0.3
- Fixed copyright notice
- Included license.txt file
- Added readme.txt
- Released to the public
04/09/2003 - version 0.2
- sha256 rewritten ussing some code and ideas
from Paul Johnston's sha1.js
- Now is possible to get the hash as a string,
base 64 encoded or hex encoded.
- It can now calculate the hash from unicode
strings.
- Hexadecimal hash can be lowercase (default)
or uppercase.
- Optimized the rest of the code.
- Written the test page with the test vectors from
nist paper.
- Tested on OE 6.0 and OE 6.0SP1.
04/08/2003 - version 0.1
- First sha256 implementation. It's a dirty one, but works.
- Tested on OE 6.0SP1
\ No newline at end of file
OfficeJS/lib/jsSha2/docs/readme.txt
0 → 100644
View file @
5e4c414a
jsSHA2 - OpenSource JavaScript implementation of the Secure Hash Algorithms,
SHA-256-384-512 - http://anmar.eu.org/projects/jssha2/
Introduction
--------------------------------
jsSHA2 is an OpenSource JavaScript implementation of the Secure Hash Algorithm,
SHA-256-384-512. As defined by NIST:
'All of the algorithms are iterative, one-way hash functions that can process a
message to produce a condensed representation called a message digest. These
algorithms enable the determination of a message’s integrity: any change to the
message will, with a very high probability, result in a different message digest.
This property is useful in the generation and verification of digital signatures
and message authentication codes, and in the generation of random numbers (bits)'
File description
--------------------------------
sha2.js:
Full implementation, it gives the hash as a string, base64 encoded or hex encoded.
sha256.js:
Is a stripped down version for using only SHA-256 in web based apps. It only gives
hex output.
Features
--------------------------------
There is a working implementation of SHA-256.
Instructions
--------------------------------
Reference the appropriate file from your page:
<script type="text/javascript" src="sha256.js"></script>
Then, use it:
<script language="JavaScript">
hash = hex_sha256("test string");
</script>
Authors
--------------------------------
- Angel Marin <anmar at gmx.net> - http://anmar.eu.org/
License
--------------------------------
- Read the included license.txt
--------------------------------
Angel Marin 2003 - 2004 - http://anmar.eu.org/
OfficeJS/lib/jsSha2/license.txt
0 → 100644
View file @
5e4c414a
Copyright (c) 2003-2004, Angel Marin
All rights reserved.
Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
* Neither the name of the <ORGANIZATION> nor the names of its contributors may
be used to endorse or promote products derived from this software without
specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
OF THE POSSIBILITY OF SUCH DAMAGE.
OfficeJS/lib/jsSha2/sha2.js
0 → 100644
View file @
5e4c414a
/* A JavaScript implementation of the Secure Hash Standard
* Version 0.3 Copyright Angel Marin 2003-2004 - http://anmar.eu.org/
* Distributed under the BSD License
* Some bits taken from Paul Johnston's SHA-1 implementation
*/
(
function
()
{
var
chrsz
=
8
;
/* bits per input character. 8 - ASCII; 16 - Unicode */
var
hexcase
=
0
;
/* hex output format. 0 - lowercase; 1 - uppercase */
function
safe_add
(
x
,
y
)
{
var
lsw
=
(
x
&
0xFFFF
)
+
(
y
&
0xFFFF
);
var
msw
=
(
x
>>
16
)
+
(
y
>>
16
)
+
(
lsw
>>
16
);
return
(
msw
<<
16
)
|
(
lsw
&
0xFFFF
);
}
function
S
(
X
,
n
)
{
return
(
X
>>>
n
)
|
(
X
<<
(
32
-
n
));}
function
R
(
X
,
n
)
{
return
(
X
>>>
n
);}
function
Ch
(
x
,
y
,
z
)
{
return
((
x
&
y
)
^
((
~
x
)
&
z
));}
function
Maj
(
x
,
y
,
z
)
{
return
((
x
&
y
)
^
(
x
&
z
)
^
(
y
&
z
));}
function
Sigma0256
(
x
)
{
return
(
S
(
x
,
2
)
^
S
(
x
,
13
)
^
S
(
x
,
22
));}
function
Sigma1256
(
x
)
{
return
(
S
(
x
,
6
)
^
S
(
x
,
11
)
^
S
(
x
,
25
));}
function
Gamma0256
(
x
)
{
return
(
S
(
x
,
7
)
^
S
(
x
,
18
)
^
R
(
x
,
3
));}
function
Gamma1256
(
x
)
{
return
(
S
(
x
,
17
)
^
S
(
x
,
19
)
^
R
(
x
,
10
));}
function
Sigma0512
(
x
)
{
return
(
S
(
x
,
28
)
^
S
(
x
,
34
)
^
S
(
x
,
39
));}
function
Sigma1512
(
x
)
{
return
(
S
(
x
,
14
)
^
S
(
x
,
18
)
^
S
(
x
,
41
));}
function
Gamma0512
(
x
)
{
return
(
S
(
x
,
1
)
^
S
(
x
,
8
)
^
R
(
x
,
7
));}
function
Gamma1512
(
x
)
{
return
(
S
(
x
,
19
)
^
S
(
x
,
61
)
^
R
(
x
,
6
));}
function
newArray
(
n
)
{
var
a
=
[];
for
(;
n
>
0
;
n
--
)
{
a
.
push
(
undefined
);
}
return
a
;
}
function
core_sha256
(
m
,
l
)
{
var
K
=
[
0x428A2F98
,
0x71374491
,
0xB5C0FBCF
,
0xE9B5DBA5
,
0x3956C25B
,
0x59F111F1
,
0x923F82A4
,
0xAB1C5ED5
,
0xD807AA98
,
0x12835B01
,
0x243185BE
,
0x550C7DC3
,
0x72BE5D74
,
0x80DEB1FE
,
0x9BDC06A7
,
0xC19BF174
,
0xE49B69C1
,
0xEFBE4786
,
0xFC19DC6
,
0x240CA1CC
,
0x2DE92C6F
,
0x4A7484AA
,
0x5CB0A9DC
,
0x76F988DA
,
0x983E5152
,
0xA831C66D
,
0xB00327C8
,
0xBF597FC7
,
0xC6E00BF3
,
0xD5A79147
,
0x6CA6351
,
0x14292967
,
0x27B70A85
,
0x2E1B2138
,
0x4D2C6DFC
,
0x53380D13
,
0x650A7354
,
0x766A0ABB
,
0x81C2C92E
,
0x92722C85
,
0xA2BFE8A1
,
0xA81A664B
,
0xC24B8B70
,
0xC76C51A3
,
0xD192E819
,
0xD6990624
,
0xF40E3585
,
0x106AA070
,
0x19A4C116
,
0x1E376C08
,
0x2748774C
,
0x34B0BCB5
,
0x391C0CB3
,
0x4ED8AA4A
,
0x5B9CCA4F
,
0x682E6FF3
,
0x748F82EE
,
0x78A5636F
,
0x84C87814
,
0x8CC70208
,
0x90BEFFFA
,
0xA4506CEB
,
0xBEF9A3F7
,
0xC67178F2
];
var
HASH
=
[
0x6A09E667
,
0xBB67AE85
,
0x3C6EF372
,
0xA54FF53A
,
0x510E527F
,
0x9B05688C
,
0x1F83D9AB
,
0x5BE0CD19
];
var
W
=
newArray
(
64
);
var
a
,
b
,
c
,
d
,
e
,
f
,
g
,
h
,
i
,
j
;
var
T1
,
T2
;
/* append padding */
m
[
l
>>
5
]
|=
0x80
<<
(
24
-
l
%
32
);
m
[((
l
+
64
>>
9
)
<<
4
)
+
15
]
=
l
;
for
(
var
i
=
0
;
i
<
m
.
length
;
i
+=
16
)
{
a
=
HASH
[
0
];
b
=
HASH
[
1
];
c
=
HASH
[
2
];
d
=
HASH
[
3
];
e
=
HASH
[
4
];
f
=
HASH
[
5
];
g
=
HASH
[
6
];
h
=
HASH
[
7
];
for
(
var
j
=
0
;
j
<
64
;
j
++
)
{
if
(
j
<
16
)
{
W
[
j
]
=
m
[
j
+
i
];
}
else
{
W
[
j
]
=
safe_add
(
safe_add
(
safe_add
(
Gamma1256
(
W
[
j
-
2
]),
W
[
j
-
7
]),
Gamma0256
(
W
[
j
-
15
])),
W
[
j
-
16
]);
}
T1
=
safe_add
(
safe_add
(
safe_add
(
safe_add
(
h
,
Sigma1256
(
e
)),
Ch
(
e
,
f
,
g
)),
K
[
j
]),
W
[
j
]);
T2
=
safe_add
(
Sigma0256
(
a
),
Maj
(
a
,
b
,
c
));
h
=
g
;
g
=
f
;
f
=
e
;
e
=
safe_add
(
d
,
T1
);
d
=
c
;
c
=
b
;
b
=
a
;
a
=
safe_add
(
T1
,
T2
);
}
HASH
[
0
]
=
safe_add
(
a
,
HASH
[
0
]);
HASH
[
1
]
=
safe_add
(
b
,
HASH
[
1
]);
HASH
[
2
]
=
safe_add
(
c
,
HASH
[
2
]);
HASH
[
3
]
=
safe_add
(
d
,
HASH
[
3
]);
HASH
[
4
]
=
safe_add
(
e
,
HASH
[
4
]);
HASH
[
5
]
=
safe_add
(
f
,
HASH
[
5
]);
HASH
[
6
]
=
safe_add
(
g
,
HASH
[
6
]);
HASH
[
7
]
=
safe_add
(
h
,
HASH
[
7
]);
}
return
HASH
;
}
function
core_sha512
(
m
,
l
)
{
var
K
=
[
0x428a2f98d728ae22
,
0x7137449123ef65cd
,
0xb5c0fbcfec4d3b2f
,
0xe9b5dba58189dbbc
,
0x3956c25bf348b538
,
0x59f111f1b605d019
,
0x923f82a4af194f9b
,
0xab1c5ed5da6d8118
,
0xd807aa98a3030242
,
0x12835b0145706fbe
,
0x243185be4ee4b28c
,
0x550c7dc3d5ffb4e2
,
0x72be5d74f27b896f
,
0x80deb1fe3b1696b1
,
0x9bdc06a725c71235
,
0xc19bf174cf692694
,
0xe49b69c19ef14ad2
,
0xefbe4786384f25e3
,
0x0fc19dc68b8cd5b5
,
0x240ca1cc77ac9c65
,
0x2de92c6f592b0275
,
0x4a7484aa6ea6e483
,
0x5cb0a9dcbd41fbd4
,
0x76f988da831153b5
,
0x983e5152ee66dfab
,
0xa831c66d2db43210
,
0xb00327c898fb213f
,
0xbf597fc7beef0ee4
,
0xc6e00bf33da88fc2
,
0xd5a79147930aa725
,
0x06ca6351e003826f
,
0x142929670a0e6e70
,
0x27b70a8546d22ffc
,
0x2e1b21385c26c926
,
0x4d2c6dfc5ac42aed
,
0x53380d139d95b3df
,
0x650a73548baf63de
,
0x766a0abb3c77b2a8
,
0x81c2c92e47edaee6
,
0x92722c851482353b
,
0xa2bfe8a14cf10364
,
0xa81a664bbc423001
,
0xc24b8b70d0f89791
,
0xc76c51a30654be30
,
0xd192e819d6ef5218
,
0xd69906245565a910
,
0xf40e35855771202a
,
0x106aa07032bbd1b8
,
0x19a4c116b8d2d0c8
,
0x1e376c085141ab53
,
0x2748774cdf8eeb99
,
0x34b0bcb5e19b48a8
,
0x391c0cb3c5c95a63
,
0x4ed8aa4ae3418acb
,
0x5b9cca4f7763e373
,
0x682e6ff3d6b2b8a3
,
0x748f82ee5defb2fc
,
0x78a5636f43172f60
,
0x84c87814a1f0ab72
,
0x8cc702081a6439ec
,
0x90befffa23631e28
,
0xa4506cebde82bde9
,
0xbef9a3f7b2c67915
,
0xc67178f2e372532b
,
0xca273eceea26619c
,
0xd186b8c721c0c207
,
0xeada7dd6cde0eb1e
,
0xf57d4f7fee6ed178
,
0x06f067aa72176fba
,
0x0a637dc5a2c898a6
,
0x113f9804bef90dae
,
0x1b710b35131c471b
,
0x28db77f523047d84
,
0x32caab7b40c72493
,
0x3c9ebe0a15c9bebc
,
0x431d67c49c100d4c
,
0x4cc5d4becb3e42b6
,
0x597f299cfc657e2a
,
0x5fcb6fab3ad6faec
,
0x6c44198c4a475817
];
var
HASH
=
[
0x6a09e667f3bcc908
,
0xbb67ae8584caa73b
,
0x3c6ef372fe94f82b
,
0xa54ff53a5f1d36f1
,
0x510e527fade682d1
,
0x9b05688c2b3e6c1f
,
0x1f83d9abfb41bd6b
,
0x5be0cd19137e2179
];
var
W
=
newArray
(
80
);
var
a
,
b
,
c
,
d
,
e
,
f
,
g
,
h
,
i
,
j
;
var
T1
,
T2
;
}
function
str2binb
(
str
)
{
var
bin
=
Array
();
var
mask
=
(
1
<<
chrsz
)
-
1
;
for
(
var
i
=
0
;
i
<
str
.
length
*
chrsz
;
i
+=
chrsz
)
bin
[
i
>>
5
]
|=
(
str
.
charCodeAt
(
i
/
chrsz
)
&
mask
)
<<
(
24
-
i
%
32
);
return
bin
;
}
function
binb2str
(
bin
)
{
var
str
=
""
;
var
mask
=
(
1
<<
chrsz
)
-
1
;
for
(
var
i
=
0
;
i
<
bin
.
length
*
32
;
i
+=
chrsz
)
str
+=
String
.
fromCharCode
((
bin
[
i
>>
5
]
>>>
(
24
-
i
%
32
))
&
mask
);
return
str
;
}
function
binb2hex
(
binarray
)
{
var
hex_tab
=
hexcase
?
"
0123456789ABCDEF
"
:
"
0123456789abcdef
"
;
var
str
=
""
;
for
(
var
i
=
0
;
i
<
binarray
.
length
*
4
;
i
++
)
{
str
+=
hex_tab
.
charAt
((
binarray
[
i
>>
2
]
>>
((
3
-
i
%
4
)
*
8
+
4
))
&
0xF
)
+
hex_tab
.
charAt
((
binarray
[
i
>>
2
]
>>
((
3
-
i
%
4
)
*
8
))
&
0xF
);
}
return
str
;
}
function
binb2b64
(
binarray
)
{
var
tab
=
"
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/
"
;
var
str
=
""
;
for
(
var
i
=
0
;
i
<
binarray
.
length
*
4
;
i
+=
3
)
{
var
triplet
=
(((
binarray
[
i
>>
2
]
>>
8
*
(
3
-
i
%
4
))
&
0xFF
)
<<
16
)
|
(((
binarray
[
i
+
1
>>
2
]
>>
8
*
(
3
-
(
i
+
1
)
%
4
))
&
0xFF
)
<<
8
)
|
((
binarray
[
i
+
2
>>
2
]
>>
8
*
(
3
-
(
i
+
2
)
%
4
))
&
0xFF
);
for
(
var
j
=
0
;
j
<
4
;
j
++
)
{
if
(
i
*
8
+
j
*
6
>
binarray
.
length
*
32
)
{
str
+=
b64pad
;
}
else
{
str
+=
tab
.
charAt
((
triplet
>>
6
*
(
3
-
j
))
&
0x3F
);}
}
}
return
str
;
}
function
hex_sha256
(
s
){
return
binb2hex
(
core_sha256
(
str2binb
(
s
),
s
.
length
*
chrsz
));
}
function
b64_sha256
(
s
){
return
binb2b64
(
core_sha256
(
str2binb
(
s
),
s
.
length
*
chrsz
));
}
function
str_sha256
(
s
){
return
binb2str
(
core_sha256
(
str2binb
(
s
),
s
.
length
*
chrsz
));
}
window
.
hex_sha256
=
hex_sha256
;
window
.
b64_sha256
=
b64_sha256
;
window
.
str_sha256
=
str_sha256
;
}());
OfficeJS/lib/jsSha2/sha256.js
0 → 100644
View file @
5e4c414a
/* A JavaScript implementation of the Secure Hash Algorithm, SHA-256
* Version 0.3 Copyright Angel Marin 2003-2004 - http://anmar.eu.org/
* Distributed under the BSD License
* Some bits taken from Paul Johnston's SHA-1 implementation
*/
(
function
()
{
var
chrsz
=
8
;
/* bits per input character. 8 - ASCII; 16 - Unicode */
function
safe_add
(
x
,
y
)
{
var
lsw
=
(
x
&
0xFFFF
)
+
(
y
&
0xFFFF
);
var
msw
=
(
x
>>
16
)
+
(
y
>>
16
)
+
(
lsw
>>
16
);
return
(
msw
<<
16
)
|
(
lsw
&
0xFFFF
);
}
function
S
(
X
,
n
)
{
return
(
X
>>>
n
)
|
(
X
<<
(
32
-
n
));}
function
R
(
X
,
n
)
{
return
(
X
>>>
n
);}
function
Ch
(
x
,
y
,
z
)
{
return
((
x
&
y
)
^
((
~
x
)
&
z
));}
function
Maj
(
x
,
y
,
z
)
{
return
((
x
&
y
)
^
(
x
&
z
)
^
(
y
&
z
));}
function
Sigma0256
(
x
)
{
return
(
S
(
x
,
2
)
^
S
(
x
,
13
)
^
S
(
x
,
22
));}
function
Sigma1256
(
x
)
{
return
(
S
(
x
,
6
)
^
S
(
x
,
11
)
^
S
(
x
,
25
));}
function
Gamma0256
(
x
)
{
return
(
S
(
x
,
7
)
^
S
(
x
,
18
)
^
R
(
x
,
3
));}
function
Gamma1256
(
x
)
{
return
(
S
(
x
,
17
)
^
S
(
x
,
19
)
^
R
(
x
,
10
));}
function
newArray
(
n
)
{
var
a
=
[];
for
(;
n
>
0
;
n
--
)
{
a
.
push
(
undefined
);
}
return
a
;
}
function
core_sha256
(
m
,
l
)
{
var
K
=
[
0x428A2F98
,
0x71374491
,
0xB5C0FBCF
,
0xE9B5DBA5
,
0x3956C25B
,
0x59F111F1
,
0x923F82A4
,
0xAB1C5ED5
,
0xD807AA98
,
0x12835B01
,
0x243185BE
,
0x550C7DC3
,
0x72BE5D74
,
0x80DEB1FE
,
0x9BDC06A7
,
0xC19BF174
,
0xE49B69C1
,
0xEFBE4786
,
0xFC19DC6
,
0x240CA1CC
,
0x2DE92C6F
,
0x4A7484AA
,
0x5CB0A9DC
,
0x76F988DA
,
0x983E5152
,
0xA831C66D
,
0xB00327C8
,
0xBF597FC7
,
0xC6E00BF3
,
0xD5A79147
,
0x6CA6351
,
0x14292967
,
0x27B70A85
,
0x2E1B2138
,
0x4D2C6DFC
,
0x53380D13
,
0x650A7354
,
0x766A0ABB
,
0x81C2C92E
,
0x92722C85
,
0xA2BFE8A1
,
0xA81A664B
,
0xC24B8B70
,
0xC76C51A3
,
0xD192E819
,
0xD6990624
,
0xF40E3585
,
0x106AA070
,
0x19A4C116
,
0x1E376C08
,
0x2748774C
,
0x34B0BCB5
,
0x391C0CB3
,
0x4ED8AA4A
,
0x5B9CCA4F
,
0x682E6FF3
,
0x748F82EE
,
0x78A5636F
,
0x84C87814
,
0x8CC70208
,
0x90BEFFFA
,
0xA4506CEB
,
0xBEF9A3F7
,
0xC67178F2
];
var
HASH
=
[
0x6A09E667
,
0xBB67AE85
,
0x3C6EF372
,
0xA54FF53A
,
0x510E527F
,
0x9B05688C
,
0x1F83D9AB
,
0x5BE0CD19
];
var
W
=
newArray
(
64
);
var
a
,
b
,
c
,
d
,
e
,
f
,
g
,
h
,
i
,
j
;
var
T1
,
T2
;
/* append padding */
m
[
l
>>
5
]
|=
0x80
<<
(
24
-
l
%
32
);
m
[((
l
+
64
>>
9
)
<<
4
)
+
15
]
=
l
;
for
(
var
i
=
0
;
i
<
m
.
length
;
i
+=
16
)
{
a
=
HASH
[
0
];
b
=
HASH
[
1
];
c
=
HASH
[
2
];
d
=
HASH
[
3
];
e
=
HASH
[
4
];
f
=
HASH
[
5
];
g
=
HASH
[
6
];
h
=
HASH
[
7
];
for
(
var
j
=
0
;
j
<
64
;
j
++
)
{
if
(
j
<
16
)
{
W
[
j
]
=
m
[
j
+
i
];
}
else
{
W
[
j
]
=
safe_add
(
safe_add
(
safe_add
(
Gamma1256
(
W
[
j
-
2
]),
W
[
j
-
7
]),
Gamma0256
(
W
[
j
-
15
])),
W
[
j
-
16
]);
}
T1
=
safe_add
(
safe_add
(
safe_add
(
safe_add
(
h
,
Sigma1256
(
e
)),
Ch
(
e
,
f
,
g
)),
K
[
j
]),
W
[
j
]);
T2
=
safe_add
(
Sigma0256
(
a
),
Maj
(
a
,
b
,
c
));
h
=
g
;
g
=
f
;
f
=
e
;
e
=
safe_add
(
d
,
T1
);
d
=
c
;
c
=
b
;
b
=
a
;
a
=
safe_add
(
T1
,
T2
);
}
HASH
[
0
]
=
safe_add
(
a
,
HASH
[
0
]);
HASH
[
1
]
=
safe_add
(
b
,
HASH
[
1
]);
HASH
[
2
]
=
safe_add
(
c
,
HASH
[
2
]);
HASH
[
3
]
=
safe_add
(
d
,
HASH
[
3
]);
HASH
[
4
]
=
safe_add
(
e
,
HASH
[
4
]);
HASH
[
5
]
=
safe_add
(
f
,
HASH
[
5
]);
HASH
[
6
]
=
safe_add
(
g
,
HASH
[
6
]);
HASH
[
7
]
=
safe_add
(
h
,
HASH
[
7
]);
}
return
HASH
;
}
function
str2binb
(
str
)
{
var
bin
=
Array
();
var
mask
=
(
1
<<
chrsz
)
-
1
;
for
(
var
i
=
0
;
i
<
str
.
length
*
chrsz
;
i
+=
chrsz
)
bin
[
i
>>
5
]
|=
(
str
.
charCodeAt
(
i
/
chrsz
)
&
mask
)
<<
(
24
-
i
%
32
);
return
bin
;
}
function
binb2hex
(
binarray
)
{
var
hexcase
=
0
;
/* hex output format. 0 - lowercase; 1 - uppercase */
var
hex_tab
=
hexcase
?
"
0123456789ABCDEF
"
:
"
0123456789abcdef
"
;
var
str
=
""
;
for
(
var
i
=
0
;
i
<
binarray
.
length
*
4
;
i
++
)
{
str
+=
hex_tab
.
charAt
((
binarray
[
i
>>
2
]
>>
((
3
-
i
%
4
)
*
8
+
4
))
&
0xF
)
+
hex_tab
.
charAt
((
binarray
[
i
>>
2
]
>>
((
3
-
i
%
4
)
*
8
))
&
0xF
);
}
return
str
;
}
function
hex_sha256
(
s
){
return
binb2hex
(
core_sha256
(
str2binb
(
s
),
s
.
length
*
chrsz
));
}
window
.
hex_sha256
=
hex_sha256
;
}());
OfficeJS/lib/jsSha2/tests/sha2_test.htm
0 → 100644
View file @
5e4c414a
<html>
<head>
<title>
anmar.eu.org - CTNjsSha2: sha2 test page
</title>
<script
language=
"JavaScript"
src=
"../sha2.js"
></script>
</head>
<body
onload=
"testSHA2()"
>
<form
name=
"testform256"
>
<input
type=
"text"
name=
"orig256"
size=
"75"
value=
"abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq"
onchange=
"testSHA256()"
><br>
<input
type=
"text"
name=
"calc256"
size=
"75"
value=
""
disabled=
"true"
><br>
<input
type=
"text"
name=
"control256"
size=
"75"
value=
"248d6a61d20638b8e5c026930c3e6039a33ce45964ff2167f6ecedd419db06c1"
onchange=
"testSHA256()"
><br>
<input
type=
"text"
name=
"result256"
size=
"15"
value=
"Testing..."
>
</form>
<script
language=
"JavaScript"
>
function
testSHA2
()
{
testSHA256
();
}
function
testSHA256
()
{
document
.
testform256
.
calc256
.
value
=
hex_sha256
(
document
.
testform256
.
orig256
.
value
);
if
(
document
.
testform256
.
calc256
.
value
==
document
.
testform256
.
control256
.
value
)
{
document
.
testform256
.
result256
.
value
=
"
OK
"
;
}
else
{
document
.
testform256
.
result256
.
value
=
"
Error
"
;
}
}
</script>
</body>
</html>
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment