我尝试在NodeJs中编写这个Python代码,但我发现我在nodeJs中使用md5
和encode in base64
的方法,但输出与Python的方法不同。
有人告诉我如何在NodeJs中处理这个问题吗?
import md5
def encrypted_id(id):
byte1 = bytearray('3go8&$8*3*3h0k(2)2')
byte2 = bytearray(id)
byte1_len = len(byte1)
for i in xrange(len(byte2)):
byte2[i] = byte2[i]^byte1[i%byte1_len]
m = md5.new()
m.update(byte2)
result = m.digest().encode('base64')[:-1]
result = result.replace('/', '_')
result = result.replace('+', '-')
return result
这是我的JS代码:
function encryptedId(dfsId) {
const byte1 = '3go8&$8*3*3h0k(2)2'
const byte2 = dfsId.toString()
const byte1_len = byte1.length
const arr = byte2.split('').map((c,i) => {
return byte2.charCodeAt(i) ^ byte1[i%byte1_len].charCodeAt(0)
})
const newByte2 = String.fromCharCode.apply({}, arr)
let encode = Util.md5(newByte2)
return Util.base64encode(encode, true).slice(0, -1)
}