const fill2Len = (str, len) => { if (!str) { return '*'.repeat(len) } const orginLen = str.length if (len <= orginLen) { return str.substr(0, len) } return str.repeat(Math.floor(len / orginLen)) + str.substr(0, len % orginLen) } const mixChars = window.navigator.userAgent // + (new Date).toUTCString().replace(/\d{2}:\d{2}:\d{2}/, '') const strXOR = (str, mix) => { if (!str) return str const strLen = str.length const mixStr = fill2Len(mix, strLen) const result = [] for (let i = 0; i < strLen; i ++) { result.push(String.fromCharCode(str.charCodeAt(i) ^ mixStr.charCodeAt(i))) } return result.join('') } export default str => strXOR(str, mixChars)