关于nodejs中 废弃的加密方法crypto.createCipher('aes256', key) 使用golang实现

发布于 2022-09-13 01:06:28 字数 1000 浏览 21 评论 0

一个N年前的nodejs项目,其中一块对密码加密的代码使用的方法是废弃掉的,缺少盐值和加密模式,现在正在使用golang进行重构,不知道该怎么使用go实现下方的加密代码

// 此处是nodejs加密

createToken(src, timestamp, key) {
        const msg = src + '|' + timestamp;
        const cipher = crypto.createCipher('aes256', key);
        let enc = cipher.update(msg, 'utf8', 'hex');
        enc += cipher.final('hex');
        return enc;
    }

// 此处是nodejs解密

    parseToken(token, key) {
        const decipher = crypto.createDecipher('aes256', key);
        let dec;
        try {
            dec = decipher.update(token, 'hex', 'utf8');
            dec += decipher.final('utf8');
        } catch (err) {
            // console.error('[token] fail to decrypt token. %j', token);
            return null;
        }
        const ts = dec.split('|');
        if (ts.length !== 2) {
            // illegal token
            return null;
        }
        return {src: ts[0], timestamp: Number(ts[1])};
    }

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

彡翼 2022-09-20 01:06:28

crypto/aes

block, err := aes.NewCipher(key)
if err != nil {
    return nil, err
}
blockSize := block.BlockSize()
blockMode := cipher.NewCBCDecrypter(block, iv[:blockSize])
origData := make([]byte, len(ciphertext))
blockMode.CryptBlocks(origData, ciphertext)
origData = PKCS7UnPadding(origData)
return origData, nil

注意在 NewCipher 传 32 字节的密钥来选择 aes256 就行了。

不太清楚 nodejs 默认的 aes256 是 CBC 还是 ECB 还是啥模式,你可以自己百度谷歌搜索下,不然就试一试。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文