function rstrHMACMD5(key, data) {
	  var i;
	  var bkey = rstr2binl(key);
	  var ipad = [];
	  var opad = [];
	  var hash;
	  ipad[15] = opad[15] = undefined;

	  if (bkey.length > 16) {
	    bkey = binlMD5(bkey, key.length * 8);
	  }

	  for (i = 0; i < 16; i += 1) {
	    ipad[i] = bkey[i] ^ 0x36363636;
	    opad[i] = bkey[i] ^ 0x5c5c5c5c;
	  }

	  hash = binlMD5(ipad.concat(rstr2binl(data)), 512 + data.length * 8);
	  return binl2rstr(binlMD5(opad.concat(hash), 512 + 128));
	}
function rstrHMACMD5(key, data) {
	  var i;
	  var bkey = rstr2binl(key);
	  var ipad = [];
	  var opad = [];
	  var hash;
	  ipad[15] = opad[15] = undefined;

	  if (bkey.length > 16) {
	    bkey = binlMD5(bkey, key.length * 8);
	  }

	  for (i = 0; i < 16; i += 1) {
	    ipad[i] = bkey[i] ^ 0x36363636;
	    opad[i] = bkey[i] ^ 0x5c5c5c5c;
	  }

	  hash = binlMD5(ipad.concat(rstr2binl(data)), 512 + data.length * 8);
	  return binl2rstr(binlMD5(opad.concat(hash), 512 + 128));
	}
function rstrHMACMD5 ( key , data ) { var i ; var bkey = rstr2binl ( key ) ; var ipad = [ ] ; var opad = [ ] ; var hash ; ipad [ 15 ] = opad [ 15 ] = undefined ; if ( bkey . length > 16 ) { bkey = binlMD5 ( bkey , key . length * 8 ) ; } for ( i = 0 ; i < 16 ; i += 1 ) { ipad [ i ] = bkey [ i ] ^ 0x36363636 ; opad [ i ] = bkey [ i ] ^ 0x5c5c5c5c ; } hash = binlMD5 ( ipad . concat ( rstr2binl ( data ) ) , 512 + data . length * 8 ) ; return binl2rstr ( binlMD5 ( opad . concat ( hash ) , 512 + 128 ) ) ; }
/*
Calculate the HMAC-MD5, of a key and some data (raw strings)
/ * Calculate the HMAC - MD5 of a key and some data ( raw strings )