1 |
|
2 | var assert = require('assert');
|
3 | var jsHashes = require('../');
|
4 |
|
5 | var JSH = {
|
6 |
|
7 | MD5: new jsHashes.MD5,
|
8 |
|
9 | SHA1: new jsHashes.SHA1,
|
10 |
|
11 | SHA256: new jsHashes.SHA256,
|
12 |
|
13 | SHA512: new jsHashes.SHA512,
|
14 |
|
15 | RMD160: new jsHashes.RMD160
|
16 | };
|
17 | var testVectors = {
|
18 | "Hello, world!": {
|
19 | MD5: "6cd3556deb0da54bca060b4c39479839",
|
20 | SHA1: "943a702d06f34599aee1f8da8ef9f7296031d699",
|
21 | SHA256: "315f5bdb76d078c43b8ac0064e4a0164612b1fce77c869345bfc94c75894edd3",
|
22 | SHA512: "c1527cd893c124773d811911970c8fe6e857d6df5dc9226bd8a160614c0cd963a4ddea2b94bb7d36021ef9d865d5cea294a82dd49a0bb269f51f6e7a57f79421"
|
23 | },
|
24 |
|
25 |
|
26 |
|
27 |
|
28 |
|
29 |
|
30 | "": {
|
31 | MD5: "d41d8cd98f00b204e9800998ecf8427e",
|
32 | RMD160: "9c1185a5c5e9fc54612808977ee8f548b2258d31"
|
33 | },
|
34 | "a": {
|
35 | MD5: "0cc175b9c0f1b6a831c399e269772661",
|
36 | RMD160: "0bdc9d2d256b3ee9daae347be6f4dc835a467ffe"
|
37 | },
|
38 | "abc": {
|
39 | MD5: "900150983cd24fb0d6963f7d28e17f72",
|
40 | SHA1: "a9993e364706816aba3e25717850c26c9cd0d89d",
|
41 | SHA256: "ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad",
|
42 | SHA512: "ddaf35a193617abacc417349ae20413112e6fa4e89a97ea20a9eeee64b55d39a2192992a274fc1a836ba3c23a3feebbd454d4423643ce80e2a9ac94fa54ca49f",
|
43 | RMD160: "8eb208f7e05d987a9b044a8e98c6b087f15a0bfc"
|
44 | },
|
45 | "message digest": {
|
46 | MD5: "f96b697d7cb7938d525a2f31aaf161d0",
|
47 | RMD160: "5d0689ef49d2fae572b881b123a85ffa21595f36"
|
48 | },
|
49 | "abcdefghijklmnopqrstuvwxyz": {
|
50 | MD5: "c3fcd3d76192e4007dfb496cca67e13b",
|
51 | RMD160: "f71c27109c692c1b56bbdceb5b9d2865b3708dbc"
|
52 | },
|
53 | "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq": {
|
54 | SHA1: "84983e441c3bd26ebaae4aa1f95129e5e54670f1",
|
55 | SHA256: "248d6a61d20638b8e5c026930c3e6039a33ce45964ff2167f6ecedd419db06c1",
|
56 | RMD160: "12a053384a9c0c88e405a06c27dcf49ada62eb2b"
|
57 | },
|
58 | "abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmnhijklmnoijklmnopjklmnopqklmnopqrlmnopqrsmnopqrstnopqrstu": {
|
59 | SHA512: "8e959b75dae313da8cf4f72814fc143f8f7779c6eb9f7fa17299aeadb6889018501d289e4900f7e4331b99dec4b5433ac7d329eeb6dd26545e96e55b874be909"
|
60 | },
|
61 | "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789": {
|
62 | MD5: "d174ab98d277d9f5a5611c2c9f419d9f",
|
63 | RMD160: "b0e20b6e3116640286ed3a87a5713079b21f5189"
|
64 | },
|
65 | "12345678901234567890123456789012345678901234567890123456789012345678901234567890": {
|
66 | MD5: "57edf4a22be3c955ac49da2e2107b67a",
|
67 | RMD160: "9b752e45573d4b39f4dbd3323cab82bf63326bfb"
|
68 | }
|
69 | };
|
70 |
|
71 | Object.keys(testVectors).forEach(function(v) {
|
72 | describe('Test vector: '+JSON.stringify(v), function() {
|
73 | Object.keys(testVectors[v]).forEach(function(h) {
|
74 | it('should have the proper '+h+' hash', function() {
|
75 | var HF = new jsHashes[h]();
|
76 | var computedHash = HF.hex(v);
|
77 | assert.equal(computedHash, testVectors[v][h]);
|
78 | });
|
79 | });
|
80 | });
|
81 | });
|