Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/utils/tests/codecs.js
blob: c43c7237dda8cf41f6a1049498fee03e5724cf80 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65

var assert = require('test/assert');
var struct = require('struct');

var raw = "Hello, World!";
var md4 = require('md4');
var md5 = require('md5');
var sha = require('sha');
var sha256 = require('sha256');
var crc32 = require('crc32');

exports.testMd4 = function () {
    assert.eq(md4.hash("test hash").toString(16), "549089516e75bd13c41ff098fbb58d5e");
    assert.eq(md4.hash("abc").toString(16), "a448017aaf21d8525fc10ae87aa6729d");
};

exports.testMd5 = function () {
    assert.eq(md5.hash(raw).toString(16), "65a8e27d8879283831b664bd8b7f0ad4", 'md5');
    assert.eq(md5.hash("message digest").toString(16), "f96b697d7cb7938d525a2f31aaf161d0");
    assert.eq(md5.hash("abc").toString(16), "900150983cd24fb0d6963f7d28e17f72");
};

exports.testSha = function () {
    assert.eq(sha.hash(raw).toString(16), "0a0a9f2a6772942557ab5355d76af442f8f65e01", 'sha1');
    assert.eq(sha.hash("160-bit hash").toString(16), "90d925d853c3d35cd54070bb75280fefad9de9e7");
};

exports.testSha256 = function () {
    assert.eq(sha256.hash(raw).toString(16), "dffd6021bb2bd5b0af676290809ec3a53191dd81c7f70a4b28688a362182986f", 'sha256');
};

exports.testCrc32 = function () {
    assert.eq(crc32.hash(raw), -(parseInt("ec4ac3d0", 16) + 1) ^ -1, 'crc32');
};

/*
    http://pajhome.org.uk/crypt/md5/
*/

/*

    Original text   Hello, World!
    Original bytes  48:65:6c:6c:6f:2c:20:57:6f:72:6c:64:21 (length=13)
    Adler32 1f9e046a
    CRC32   ec4ac3d0
    Haval   69329e93ccfd832bb1a4ee00d01344cf
    MD2 1c8f1e6a94aaa7145210bf90bb52871a
    MD4 94e3cb0fa9aa7a5ee3db74b79e915989
    MD5 65a8e27d8879283831b664bd8b7f0ad4
    RipeMD128   67f9fe75ca2886dc76ad00f7276bdeba
    RipeMD160   527a6a4b9a6da75607546842e0e00105350b1aaf
    SHA-1   0a0a9f2a6772942557ab5355d76af442f8f65e01
    SHA-256 dffd6021bb2bd5b0af676290809ec3a53191dd81c7f70a4b28688a362182986f
    SHA-384 5485cc9b3365b4305dfb4e8337e0a598a574f8242bf17289e0dd6c20a3cd44a089de16ab4ab308f63e44b1170eb5f515
    SHA-512 374d794a95cdcfd8b35993185fef9ba368f160d8daf432d08ba9f1ed1e5abe6cc69291e0fa2fe0006a52570ef18c19def4e617c33ce52ef0a6e5fbe318cb0387
    Tiger   252a5047009cd0710a1aa60525daf73ea55cb90319a39242
    Whirlpool   16c581089b6a6f356ae56e16a63a4c613eecd82a2a894b293f5ee45c37a31d09d7a8b60bfa7e414bd4a7166662cea882b5cf8c96b7d583fc610ad202591bcdb1

    http://www.fileformat.info/tool/hash.htm?text=Hello%2C+World%21

*/

if (require.main === module.id)
    require("os").exit(require("test/runner").run(exports));