【发布时间】:2012-02-09 23:00:12
【问题描述】:
在this question Erik 需要在 Node.js 中生成一个安全的随机令牌。有一个方法crypto.randomBytes 可以生成一个随机缓冲区。但是,node 中的 base64 编码不是 url 安全的,它包括 / 和 + 而不是 - 和 _。因此,我发现生成此类令牌的最简单方法是
require('crypto').randomBytes(48, function(ex, buf) {
token = buf.toString('base64').replace(/\//g,'_').replace(/\+/g,'-');
});
有没有更优雅的方式?
【问题讨论】:
-
剩下的代码是什么?
-
没有什么需要的了。你想看什么休息?
-
没关系,我得到它的工作,只是不确定你是如何把它扔进去的,但更好地掌握了这个概念
-
无耻的自插件,我创建了另一个 npm 包:tokgen。您可以使用类似于正则表达式中的字符类 (
'a-zA-Z0-9_-') 的范围语法来指定允许的字符。 -
这对于任何想要特定字符串长度的人来说可能很方便。 3/4 是处理基本转换。 /*返回一个base64编码的长度字符串*/ function randomString(length){ return crypto.randomBytes(length*3/4).toString('base64');非常适合那些有字符限制的数据库。
标签: javascript node.js base64 securestring