Node.js 中的安全随机令牌

新手上路,请多包涵

这个问题 中,Erik 需要在 Node.js 中生成一个安全的随机令牌。有生成随机缓冲区的方法 crypto.randomBytes 。但是,node 中的 base64 编码不是 url 安全的,它包含 /+ 而不是 -_ 。因此,我发现生成此类令牌的最简单方法是

require('crypto').randomBytes(48, function(ex, buf) {
    token = buf.toString('base64').replace(/\//g,'_').replace(/\+/g,'-');
});

有没有更优雅的方式?

原文由 Hubert OG 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 916
2 个回答

尝试 crypto.randomBytes()

 require('crypto').randomBytes(48, function(err, buffer) {
 var token = buffer.toString('hex');
 });

“十六进制”编码适用于节点 v0.6.x 或更高版本。

原文由 thejh 发布,翻译遵循 CC BY-SA 3.0 许可协议

如果您不是像我这样的 JS 专家,则可以使用同步选项。不得不花一些时间在如何访问内联函数变量上

var token = crypto.randomBytes(64).toString('hex');

原文由 phoenix2010 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题