这段 Python 代码用 JS 怎么写呢, 试了下结果都不一样
发布于 8 年前 作者 rupertqin 3954 次浏览 来自 问答

就是这段 python 代码, 想用 js 写一遍

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)
}

其中的 Util.md5 和 base64encode 方法我用的是这里的 https://github.com/node-modules/utility, 就是最后两行代码输出不一样。。

回到顶部