首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >创建加密API密钥的最佳方法

创建加密API密钥的最佳方法
EN

Stack Overflow用户
提问于 2010-10-28 08:32:55
回答 2查看 3.7K关注 0票数 2

我在我的应用程序中有一个开放的API,我想为它提供访问密钥。传入的信息将是用户id、资源id和要更新的值。我希望每个资源都有一个API密钥。

我最好能够只使用提供的数据来验证传入请求的真实性,而不是检查任何类型的数据库(非常简单,非常快速!)

如果我使用md5从资源ID、用户id和盐生成API,它可能类似于……

代码语言:javascript
复制
authentic_request = md5(user_id + resource_id + salt) == api_key

我的问题实际上是关于我应该有多偏执。只用普通的老式md5就能满足上面的要求吗?另一种选择是使用openssl针对pem生成密钥,然后md5结果以使其简洁,这听起来是不是过于偏执,甚至在现实中增加了一层安全性?

任何想法,甚至是备选方案,非常感谢!

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-10-28 08:45:08

这实际上是hash-based message authentication code的简单实现。

假设您打算在(user_id, resource_id)对的基础上分发这些密钥,并将您所说的salt的值保密,并且您不希望有严重的攻击尝试,那么这应该是可行的。但是,最佳实践指出,您应该使用比单纯的连接更安全的算法来组合密钥和数据,并使用更强大的摘要算法,例如SHA-1;有一种标准的HMAC-SHA1组合算法可以很好地实现这一点。

第三个值实际上是一个密钥,而不是一个盐;拥有这个密钥可以生成和验证验证码。

票数 4
EN

Stack Overflow用户

发布于 2010-10-28 08:48:05

这取决于你想要保护什么。就其本身而言,这将防止您的API被随意滥用,但它不能防止重放攻击。如果有人正在嗅探您的流量,那么他们将看到密钥,并能够通过重用它来访问资源。将SSL添加到解决方案中可以防止此类攻击。

在此期间,您也可以将MD5更改为SHA-256。

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

https://stackoverflow.com/questions/4038811

复制
相关文章

相似问题

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