// 按位异或 加密
var posNo = 'C0041710190002'
// 特殊字符不进行 与或 加密 (因为A,a,Z,z,转换后会变成符号,不方面用户输入,也可自己定义)
var special = {
'A': 1,
'a': 1,
'Z': 1,
'z': 1
}
console.log('xor: ', bitEncrypt(posNo)) // xor: B1150601081113
function bitEncrypt (data) {
var data = data || ''
var arr = data.split('')
var result = arr.map(function (item) {
if (!special[item]) {
return xor(item)
} else {
return item
}
})
return result.join('')
}
function xor(msg) {
var isNum = /[0-9]/.test(msg)
if (isNum) {
return +msg ^ 1
} else {
var num10 = msg.charCodeAt()
var numXOR = num10 ^ 1
return String.fromCharCode(numXOR)
}
}