首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >生成新API密钥的最佳方法是什么?

生成新API密钥的最佳方法是什么?
EN

Stack Overflow用户
提问于 2013-01-19 07:26:33
回答 6查看 108.4K关注 0票数 127

所以现在有很多不同的服务,Google,Twitter,Facebook等等。

每个服务都有一个API密钥,例如:

AIzaSyClzfrOzB818x55FASHvX4JuGQciR9lv7q

所有键的长度和它们包含的字符不同,我想知道生成API键的最佳方法是什么?

我要求的不是一种特定的语言,仅仅是创建密钥的一般方法,应该是用户应用程序的细节加密,还是哈希,或者随机字符串的哈希,等等。我们应该担心哈希算法(MSD,SHA1,bcrypt)等等吗?

编辑:,我已经和几个朋友谈过了(电子邮件/推特),他们建议只使用GUID,去掉破折号。

不过,对我来说,这似乎有点麻烦,希望能得到更多的想法。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2013-09-11 00:30:35

使用为加密设计的随机数生成器。然后基地-64编码的号码。

这是一个C#示例:

代码语言:javascript
运行
复制
var key = new byte[32];
using (var generator = RandomNumberGenerator.Create())
    generator.GetBytes(key);
string apiKey = Convert.ToBase64String(key);
票数 77
EN

Stack Overflow用户

发布于 2014-06-23 14:02:11

API密钥需要具有以下属性:

  • 唯一标识授权的API用户??API key的"key“部分。
  • 验证该用户-无法猜测/伪造
  • 如果用户行为不当,则可以将其撤销--通常情况下,他们会将其输入可以删除记录的数据库中。

通常,您将拥有数千个或数百万个API密钥,而不是数十亿,因此它们不需要:

  • 可靠地存储有关API用户的信息,因为它可以存储在数据库中。

因此,生成API密钥的一种方法是获取两条信息:

  1. 保证唯一性的序列号
  2. 足够多的随机位来填充密钥

用私人秘密签了名。

计数器保证它们唯一地标识用户,并且签名防止伪造。可撤销性要求在执行任何需要API密钥授权的操作之前,检查密钥在数据库中是否仍然有效。

如果您需要从多个数据中心生成密钥,或者没有一种很好的分布式方法来分配序列号,那么一个好的GUID生成器就是增量计数器的一个很好的近似。

或随机字符串的散列。

哈希并不能防止伪造。签署可以保证钥匙来自你。

票数 34
EN

Stack Overflow用户

发布于 2022-02-02 20:13:48

更新,在Chrome的控制台和Node.js中,您可以发出:

代码语言:javascript
运行
复制
crypto.randomUUID()

示例输出:

代码语言:javascript
运行
复制
'4f9d5fe0-a964-4f11-af99-6c40de98af77'

原始答案(更强):

您可以尝试您的web浏览器控制台,方法是打开一个新选项卡,点击Chrome上的CTRL + SHIFT +I,然后输入以下立即调用的函数表达式(IIFE):

代码语言:javascript
运行
复制
(async function (){
  let k = await window.crypto.subtle.generateKey(
    {name: "AES-GCM", length: 256}, true, ["encrypt", "decrypt"]);
  const jwk = await crypto.subtle.exportKey("jwk", k)
  console.log(jwk.k)
})()

示例输出:

代码语言:javascript
运行
复制
gv4Gp1OeZhF5eBNU7vDjDL-yqZ6vrCfdCzF7HGVMiCs

参考文献:

https://developer.mozilla.org/en-US/docs/Web/API/SubtleCrypto/generateKey

https://developer.mozilla.org/en-US/docs/Web/API/SubtleCrypto/exportKey

我得承认我写这封信主要是为了供将来参考.

票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14412132

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档