define(function (require, exports, module) { function bin216(s) { var i, l, o = "", n; s += ""; b = ""; for (i = 0, l = s.length; i < l; i++) { b = s.charCodeAt(i); n = b.toString(16); o += n.length < 2 ? "0" + n : n; } return o; }; var Base32 = new function () { var delta = 0x9E3779B8; function longArrayToString(data, includeLength) { var length = data.length; var n = (length - 1) << 2; if (includeLength) { var m = data[length - 1]; if ((m < n - 3) || (m > n)) return null; n = m; } for (var i = 0; i < length; i++) { data[i] = String.fromCharCode(data[i] & 0xff, data[i] >>> 8 & 0xff, data[i] >>> 16 & 0xff, data[i] >>> 24 & 0xff); } if (includeLength) { return data.join('').substring(0, n); } else { return data.join(''); } }; function stringToLongArray(string, includeLength) { var length = string.length; var result = []; for (var i = 0; i < length; i += 4) { result[i >> 2] = string.charCodeAt(i) | string.charCodeAt(i + 1) << 8 | string.charCodeAt(i + 2) << 16 | string.charCodeAt(i + 3) << 24; } if (includeLength) { result[result.length] = length; } return result; }; this.encrypt = function (string, key) { if (string == "") { return ""; } var v = stringToLongArray(string, true); var k = stringToLongArray(key, false); if (k.length < 4) { k.length = 4; } var n = v.length - 1; var z = v[n], y = v[0]; var mx, e, p, q = Math.floor(6 + 52 / (n + 1)), sum = 0; while (0 < q--) { sum = sum + delta & 0xffffffff; e = sum >>> 2 & 3; for (p = 0; p < n; p++) { y = v[p + 1]; mx = (z >>> 5 ^ y << 2) + (y >>> 3 ^ z << 4) ^ (sum ^ y) + (k[p & 3 ^ e] ^ z); z = v[p] = v[p] + mx & 0xffffffff; } y = v[0]; mx = (z >>> 5 ^ y << 2) + (y >>> 3 ^ z << 4) ^ (sum ^ y) + (k[p & 3 ^ e] ^ z); z = v[n] = v[n] + mx & 0xffffffff; } return longArrayToString(v, false); }; }; var keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; function encode32(input) { input = escape(input); var output = ""; var chr1, chr2, chr3 = ""; var enc1, enc2, enc3, enc4 = ""; var i = 0; do { chr1 = input.charCodeAt(i++); chr2 = input.charCodeAt(i++); chr3 = input.charCodeAt(i++); enc1 = chr1 >> 2; enc2 = ((chr1 & 3) << 4) | (chr2 >> 4); enc3 = ((chr2 & 15) << 2) | (chr3 >> 6); enc4 = chr3 & 63; if (isNaN(chr2)) { enc3 = enc4 = 64; } else if (isNaN(chr3)) { enc4 = 64; } output = output + keyStr.charAt(enc1) + keyStr.charAt(enc2) + keyStr.charAt(enc3) + keyStr.charAt(enc4); chr1 = chr2 = chr3 = ""; enc1 = enc2 = enc3 = enc4 = ""; } while (i < input.length); return output; }; var exp = { encode: function (key, value) { return encode32(bin216(Base32.encrypt(value, key))); }, createEncodeStr: function (key, value) { //keyVlues[0] + ",-," + encode32(bin216(Base32.encrypt(keyVlues[1], keyVlues[0]))) + ":::" + 'myversion' + ",-," + window.helperVersion return key + ",-," + exp.encode(key, value) + ":::myversion,-,undefined"; } }; return exp; });