github.com/jincm/wesharechain@v0.0.0-20210122032815-1537409ce26a/app/lib/crypto1/md5/md5.js (about)

     1  /*!
     2   * Crypto-JS v1.1.0
     3   * http://code.google.com/p/crypto-js/
     4   * Copyright (c) 2009, Jeff Mott. All rights reserved.
     5   * http://code.google.com/p/crypto-js/wiki/License
     6   */
     7  (function(){
     8  
     9  // Shortcut
    10  var util = Crypto.util;
    11  
    12  // Public API
    13  var MD5 = Crypto.MD5 = function (message, options) {
    14  	var digestbytes = util.wordsToBytes(MD5._md5(message));
    15  	return options && options.asBytes ? digestbytes :
    16  	       options && options.asString ? util.bytesToString(digestbytes) :
    17  	       util.bytesToHex(digestbytes);
    18  };
    19  
    20  // The core
    21  MD5._md5 = function (message) {
    22  
    23  	var m = util.stringToWords(message),
    24  	    l = message.length * 8,
    25  	    a =  1732584193,
    26  	    b = -271733879,
    27  	    c = -1732584194,
    28  	    d =  271733878;
    29  
    30  	// Swap endian
    31  	for (var i = 0; i < m.length; i++) {
    32  		m[i] = ((m[i] <<  8) | (m[i] >>> 24)) & 0x00FF00FF |
    33  		       ((m[i] << 24) | (m[i] >>>  8)) & 0xFF00FF00;
    34  	}
    35  
    36  	// Padding
    37  	m[l >>> 5] |= 0x80 << (l % 32);
    38  	m[(((l + 64) >>> 9) << 4) + 14] = l;
    39  
    40  	for (var i = 0; i < m.length; i += 16) {
    41  
    42  		var aa = a,
    43  		    bb = b,
    44  		    cc = c,
    45  		    dd = d;
    46  
    47  		a = MD5._ff(a, b, c, d, m[i+ 0],  7, -680876936);
    48  		d = MD5._ff(d, a, b, c, m[i+ 1], 12, -389564586);
    49  		c = MD5._ff(c, d, a, b, m[i+ 2], 17,  606105819);
    50  		b = MD5._ff(b, c, d, a, m[i+ 3], 22, -1044525330);
    51  		a = MD5._ff(a, b, c, d, m[i+ 4],  7, -176418897);
    52  		d = MD5._ff(d, a, b, c, m[i+ 5], 12,  1200080426);
    53  		c = MD5._ff(c, d, a, b, m[i+ 6], 17, -1473231341);
    54  		b = MD5._ff(b, c, d, a, m[i+ 7], 22, -45705983);
    55  		a = MD5._ff(a, b, c, d, m[i+ 8],  7,  1770035416);
    56  		d = MD5._ff(d, a, b, c, m[i+ 9], 12, -1958414417);
    57  		c = MD5._ff(c, d, a, b, m[i+10], 17, -42063);
    58  		b = MD5._ff(b, c, d, a, m[i+11], 22, -1990404162);
    59  		a = MD5._ff(a, b, c, d, m[i+12],  7,  1804603682);
    60  		d = MD5._ff(d, a, b, c, m[i+13], 12, -40341101);
    61  		c = MD5._ff(c, d, a, b, m[i+14], 17, -1502002290);
    62  		b = MD5._ff(b, c, d, a, m[i+15], 22,  1236535329);
    63  
    64  		a = MD5._gg(a, b, c, d, m[i+ 1],  5, -165796510);
    65  		d = MD5._gg(d, a, b, c, m[i+ 6],  9, -1069501632);
    66  		c = MD5._gg(c, d, a, b, m[i+11], 14,  643717713);
    67  		b = MD5._gg(b, c, d, a, m[i+ 0], 20, -373897302);
    68  		a = MD5._gg(a, b, c, d, m[i+ 5],  5, -701558691);
    69  		d = MD5._gg(d, a, b, c, m[i+10],  9,  38016083);
    70  		c = MD5._gg(c, d, a, b, m[i+15], 14, -660478335);
    71  		b = MD5._gg(b, c, d, a, m[i+ 4], 20, -405537848);
    72  		a = MD5._gg(a, b, c, d, m[i+ 9],  5,  568446438);
    73  		d = MD5._gg(d, a, b, c, m[i+14],  9, -1019803690);
    74  		c = MD5._gg(c, d, a, b, m[i+ 3], 14, -187363961);
    75  		b = MD5._gg(b, c, d, a, m[i+ 8], 20,  1163531501);
    76  		a = MD5._gg(a, b, c, d, m[i+13],  5, -1444681467);
    77  		d = MD5._gg(d, a, b, c, m[i+ 2],  9, -51403784);
    78  		c = MD5._gg(c, d, a, b, m[i+ 7], 14,  1735328473);
    79  		b = MD5._gg(b, c, d, a, m[i+12], 20, -1926607734);
    80  
    81  		a = MD5._hh(a, b, c, d, m[i+ 5],  4, -378558);
    82  		d = MD5._hh(d, a, b, c, m[i+ 8], 11, -2022574463);
    83  		c = MD5._hh(c, d, a, b, m[i+11], 16,  1839030562);
    84  		b = MD5._hh(b, c, d, a, m[i+14], 23, -35309556);
    85  		a = MD5._hh(a, b, c, d, m[i+ 1],  4, -1530992060);
    86  		d = MD5._hh(d, a, b, c, m[i+ 4], 11,  1272893353);
    87  		c = MD5._hh(c, d, a, b, m[i+ 7], 16, -155497632);
    88  		b = MD5._hh(b, c, d, a, m[i+10], 23, -1094730640);
    89  		a = MD5._hh(a, b, c, d, m[i+13],  4,  681279174);
    90  		d = MD5._hh(d, a, b, c, m[i+ 0], 11, -358537222);
    91  		c = MD5._hh(c, d, a, b, m[i+ 3], 16, -722521979);
    92  		b = MD5._hh(b, c, d, a, m[i+ 6], 23,  76029189);
    93  		a = MD5._hh(a, b, c, d, m[i+ 9],  4, -640364487);
    94  		d = MD5._hh(d, a, b, c, m[i+12], 11, -421815835);
    95  		c = MD5._hh(c, d, a, b, m[i+15], 16,  530742520);
    96  		b = MD5._hh(b, c, d, a, m[i+ 2], 23, -995338651);
    97  
    98  		a = MD5._ii(a, b, c, d, m[i+ 0],  6, -198630844);
    99  		d = MD5._ii(d, a, b, c, m[i+ 7], 10,  1126891415);
   100  		c = MD5._ii(c, d, a, b, m[i+14], 15, -1416354905);
   101  		b = MD5._ii(b, c, d, a, m[i+ 5], 21, -57434055);
   102  		a = MD5._ii(a, b, c, d, m[i+12],  6,  1700485571);
   103  		d = MD5._ii(d, a, b, c, m[i+ 3], 10, -1894986606);
   104  		c = MD5._ii(c, d, a, b, m[i+10], 15, -1051523);
   105  		b = MD5._ii(b, c, d, a, m[i+ 1], 21, -2054922799);
   106  		a = MD5._ii(a, b, c, d, m[i+ 8],  6,  1873313359);
   107  		d = MD5._ii(d, a, b, c, m[i+15], 10, -30611744);
   108  		c = MD5._ii(c, d, a, b, m[i+ 6], 15, -1560198380);
   109  		b = MD5._ii(b, c, d, a, m[i+13], 21,  1309151649);
   110  		a = MD5._ii(a, b, c, d, m[i+ 4],  6, -145523070);
   111  		d = MD5._ii(d, a, b, c, m[i+11], 10, -1120210379);
   112  		c = MD5._ii(c, d, a, b, m[i+ 2], 15,  718787259);
   113  		b = MD5._ii(b, c, d, a, m[i+ 9], 21, -343485551);
   114  
   115  		a += aa;
   116  		b += bb;
   117  		c += cc;
   118  		d += dd;
   119  
   120  	}
   121  
   122  	return util.endian([a, b, c, d]);
   123  
   124  };
   125  
   126  // Auxiliary functions
   127  MD5._ff  = function (a, b, c, d, x, s, t) {
   128  	var n = a + (b & c | ~b & d) + (x >>> 0) + t;
   129  	return ((n << s) | (n >>> (32 - s))) + b;
   130  };
   131  MD5._gg  = function (a, b, c, d, x, s, t) {
   132  	var n = a + (b & d | c & ~d) + (x >>> 0) + t;
   133  	return ((n << s) | (n >>> (32 - s))) + b;
   134  };
   135  MD5._hh  = function (a, b, c, d, x, s, t) {
   136  	var n = a + (b ^ c ^ d) + (x >>> 0) + t;
   137  	return ((n << s) | (n >>> (32 - s))) + b;
   138  };
   139  MD5._ii  = function (a, b, c, d, x, s, t) {
   140  	var n = a + (c ^ (b | ~d)) + (x >>> 0) + t;
   141  	return ((n << s) | (n >>> (32 - s))) + b;
   142  };
   143  
   144  // Package private blocksize
   145  MD5._blocksize = 16;
   146  
   147  })();