使用节点生成API令牌 - 大写和小写字母和数字?

时间:2016-07-01 02:44:27

标签: node.js express token api-key

我正在尝试在expressjs中生成唯一键/令牌。我正在使用hat。但它产生的关键是数字和小写字母:

1b1a7af4e304fc0fa49216ce248ae574

我的代码:

var express = require('express');
var hat = require("hat");
var app = express();

app.get('/', function (req, res) {
    res.send(hat());
});

但我更喜欢这样的键(大小写和数字的混合):

EzpoQlgvQESADxzAQX94uwPgoYX

任何想法我应该用什么节点包来创建关键字(大小写和数字的混合)?

顺便说一下,这两种键之间有什么区别?哪个更安全,更好?

1 个答案:

答案 0 :(得分:2)

就这种形式生成唯一键而言,我不确定是否有库,但最简单的解决方案可能是取消任何第三方代码并使用单行代码,例如{ {1}}会给你带来同样好的结果,让你控制你的碰撞概率并自定义你的钥匙。

至于你的第二个问题哪个更好,这取决于你对更好的分类。

密钥的主要目标,例如entropy的级别。简单来说,同时使用大写和小写字母和数字可以将每个字符的熵增加到62种可能的组合,而只有小写字母和数字则可以有36种可能的组合。

这意味着就熵而言,同样是简单的术语,62个字符的小写+数字键与36个字符的长大写+小写+数字键一样有效。

虽然拥有较短的密钥可能对您的情况(或偏好?)有用,但您可能遇到可能不区分大小写的不同技术问题。