diff options
author | horchi <vdr@jwendel.de> | 2017-03-05 16:39:28 +0100 |
---|---|---|
committer | horchi <vdr@jwendel.de> | 2017-03-05 16:39:28 +0100 |
commit | e2a48d8701f91b8e24fbe9e99e91eb72a87bb749 (patch) | |
tree | 726f70554b4ca985a09ef6e30a7fdc8df089993c /http/3rdParty/yaMD5/test/lib/izumo-md5.js | |
download | vdr-epg-daemon-e2a48d8701f91b8e24fbe9e99e91eb72a87bb749.tar.gz vdr-epg-daemon-e2a48d8701f91b8e24fbe9e99e91eb72a87bb749.tar.bz2 |
git init1.1.103
Diffstat (limited to 'http/3rdParty/yaMD5/test/lib/izumo-md5.js')
-rw-r--r-- | http/3rdParty/yaMD5/test/lib/izumo-md5.js | 206 |
1 files changed, 206 insertions, 0 deletions
diff --git a/http/3rdParty/yaMD5/test/lib/izumo-md5.js b/http/3rdParty/yaMD5/test/lib/izumo-md5.js new file mode 100644 index 0000000..bf400f6 --- /dev/null +++ b/http/3rdParty/yaMD5/test/lib/izumo-md5.js @@ -0,0 +1,206 @@ +// http://www.onicos.com/staff/iz/amuse/javascript/expert/md5.txt +var izumoMD5 = (function(){ + +/* md5.js - MD5 Message-Digest + * Copyright (C) 1999,2002 Masanao Izumo <iz@onicos.co.jp> + * Version: 2.0.0 + * LastModified: May 13 2002 + * + * This program is free software. You can redistribute it and/or modify + * it without any warranty. This library calculates the MD5 based on RFC1321. + * See RFC1321 for more information and algorism. + */ + +/* Interface: + * md5_128bits = MD5_hash(data); + * md5_hexstr = MD5_hexhash(data); + */ + +/* ChangeLog + * 2002/05/13: Version 2.0.0 released + * NOTICE: API is changed. + * 2002/04/15: Bug fix about MD5 length. + */ + + +// md5_T[i] = parseInt(Math.abs(Math.sin(i)) * 4294967296.0); +var MD5_T = new Array(0x00000000, 0xd76aa478, 0xe8c7b756, 0x242070db, + 0xc1bdceee, 0xf57c0faf, 0x4787c62a, 0xa8304613, + 0xfd469501, 0x698098d8, 0x8b44f7af, 0xffff5bb1, + 0x895cd7be, 0x6b901122, 0xfd987193, 0xa679438e, + 0x49b40821, 0xf61e2562, 0xc040b340, 0x265e5a51, + 0xe9b6c7aa, 0xd62f105d, 0x02441453, 0xd8a1e681, + 0xe7d3fbc8, 0x21e1cde6, 0xc33707d6, 0xf4d50d87, + 0x455a14ed, 0xa9e3e905, 0xfcefa3f8, 0x676f02d9, + 0x8d2a4c8a, 0xfffa3942, 0x8771f681, 0x6d9d6122, + 0xfde5380c, 0xa4beea44, 0x4bdecfa9, 0xf6bb4b60, + 0xbebfbc70, 0x289b7ec6, 0xeaa127fa, 0xd4ef3085, + 0x04881d05, 0xd9d4d039, 0xe6db99e5, 0x1fa27cf8, + 0xc4ac5665, 0xf4292244, 0x432aff97, 0xab9423a7, + 0xfc93a039, 0x655b59c3, 0x8f0ccc92, 0xffeff47d, + 0x85845dd1, 0x6fa87e4f, 0xfe2ce6e0, 0xa3014314, + 0x4e0811a1, 0xf7537e82, 0xbd3af235, 0x2ad7d2bb, + 0xeb86d391); + +var MD5_round1 = new Array(new Array( 0, 7, 1), new Array( 1,12, 2), + new Array( 2,17, 3), new Array( 3,22, 4), + new Array( 4, 7, 5), new Array( 5,12, 6), + new Array( 6,17, 7), new Array( 7,22, 8), + new Array( 8, 7, 9), new Array( 9,12,10), + new Array(10,17,11), new Array(11,22,12), + new Array(12, 7,13), new Array(13,12,14), + new Array(14,17,15), new Array(15,22,16)); + +var MD5_round2 = new Array(new Array( 1, 5,17), new Array( 6, 9,18), + new Array(11,14,19), new Array( 0,20,20), + new Array( 5, 5,21), new Array(10, 9,22), + new Array(15,14,23), new Array( 4,20,24), + new Array( 9, 5,25), new Array(14, 9,26), + new Array( 3,14,27), new Array( 8,20,28), + new Array(13, 5,29), new Array( 2, 9,30), + new Array( 7,14,31), new Array(12,20,32)); + +var MD5_round3 = new Array(new Array( 5, 4,33), new Array( 8,11,34), + new Array(11,16,35), new Array(14,23,36), + new Array( 1, 4,37), new Array( 4,11,38), + new Array( 7,16,39), new Array(10,23,40), + new Array(13, 4,41), new Array( 0,11,42), + new Array( 3,16,43), new Array( 6,23,44), + new Array( 9, 4,45), new Array(12,11,46), + new Array(15,16,47), new Array( 2,23,48)); + +var MD5_round4 = new Array(new Array( 0, 6,49), new Array( 7,10,50), + new Array(14,15,51), new Array( 5,21,52), + new Array(12, 6,53), new Array( 3,10,54), + new Array(10,15,55), new Array( 1,21,56), + new Array( 8, 6,57), new Array(15,10,58), + new Array( 6,15,59), new Array(13,21,60), + new Array( 4, 6,61), new Array(11,10,62), + new Array( 2,15,63), new Array( 9,21,64)); + +function MD5_F(x, y, z) { return (x & y) | (~x & z); } +function MD5_G(x, y, z) { return (x & z) | (y & ~z); } +function MD5_H(x, y, z) { return x ^ y ^ z; } +function MD5_I(x, y, z) { return y ^ (x | ~z); } + +var MD5_round = new Array(new Array(MD5_F, MD5_round1), + new Array(MD5_G, MD5_round2), + new Array(MD5_H, MD5_round3), + new Array(MD5_I, MD5_round4)); + +function MD5_pack(n32) { + return String.fromCharCode(n32 & 0xff) + + String.fromCharCode((n32 >>> 8) & 0xff) + + String.fromCharCode((n32 >>> 16) & 0xff) + + String.fromCharCode((n32 >>> 24) & 0xff); +} + +function MD5_unpack(s4) { + return s4.charCodeAt(0) | + (s4.charCodeAt(1) << 8) | + (s4.charCodeAt(2) << 16) | + (s4.charCodeAt(3) << 24); +} + +function MD5_number(n) { + while (n < 0) + n += 4294967296; + while (n > 4294967295) + n -= 4294967296; + return n; +} + +function MD5_apply_round(x, s, f, abcd, r) { + var a, b, c, d; + var kk, ss, ii; + var t, u; + + a = abcd[0]; + b = abcd[1]; + c = abcd[2]; + d = abcd[3]; + kk = r[0]; + ss = r[1]; + ii = r[2]; + + u = f(s[b], s[c], s[d]); + t = s[a] + u + x[kk] + MD5_T[ii]; + t = MD5_number(t); + t = ((t<<ss) | (t>>>(32-ss))); + t += s[b]; + s[a] = MD5_number(t); +} + +function MD5_hash(data) { + var abcd, x, state, s; + var len, index, padLen, f, r; + var i, j, k; + var tmp; + + state = new Array(0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476); + len = data.length; + index = len & 0x3f; + padLen = (index < 56) ? (56 - index) : (120 - index); + if(padLen > 0) { + data += "\x80"; + for(i = 0; i < padLen - 1; i++) + data += "\x00"; + } + data += MD5_pack(len * 8); + data += MD5_pack(0); + len += padLen + 8; + abcd = new Array(0, 1, 2, 3); + x = new Array(16); + s = new Array(4); + + for(k = 0; k < len; k += 64) { + for(i = 0, j = k; i < 16; i++, j += 4) { + x[i] = data.charCodeAt(j) | + (data.charCodeAt(j + 1) << 8) | + (data.charCodeAt(j + 2) << 16) | + (data.charCodeAt(j + 3) << 24); + } + for(i = 0; i < 4; i++) + s[i] = state[i]; + for(i = 0; i < 4; i++) { + f = MD5_round[i][0]; + r = MD5_round[i][1]; + for(j = 0; j < 16; j++) { + MD5_apply_round(x, s, f, abcd, r[j]); + tmp = abcd[0]; + abcd[0] = abcd[3]; + abcd[3] = abcd[2]; + abcd[2] = abcd[1]; + abcd[1] = tmp; + } + } + + for(i = 0; i < 4; i++) { + state[i] += s[i]; + state[i] = MD5_number(state[i]); + } + } + + return MD5_pack(state[0]) + + MD5_pack(state[1]) + + MD5_pack(state[2]) + + MD5_pack(state[3]); +} + +function MD5_hexhash(data) { + var i, out, c; + var bit128; + + bit128 = MD5_hash(data); + out = ""; + for(i = 0; i < 16; i++) { + c = bit128.charCodeAt(i); + out += "0123456789abcdef".charAt((c>>4) & 0xf); + out += "0123456789abcdef".charAt(c & 0xf); + } + return out; +} + +return MD5_hexhash; + +})(); |