为什么使用API​​密钥和秘密?

我遇到了很多API,为用户提供了一个API 密钥和一个秘密 。 但是我的问题是:两者有什么区别?

在我看来,一个关键就足够了。 说我有一把钥匙,只有我和服务器知道。 我用这个键创build一个HMAC哈希,并做一个API调用。 在服务器上,我们再次创buildHMAC散列并将其与发送的散列进行比较。 如果相同,则通话被authentication。

那么为什么要使用两个键?

编辑:或者是用于查找API密钥的API密钥?

秘密密钥encryption依赖于使用相同的密钥进行编码,然后对消息进行解码。 因此,只有知道“秘密”的人才能阅读该消息。

RSA安全性基于两个匹配的密钥。 每个用户都有一个公钥,每个人都可以(应该)知道。 还有一个只有用户应该知道的私钥。 公钥encryption的消息只能用私钥解密,反之亦然。

因此,如果我想向您发送只有您能阅读的消息,我(从networking上)获取您的公钥,用该密钥对消息进行encryption,并且您是唯一可以解密的人。

或者,如果我想向您certificate我发送了一条消息,则可以使用我的私钥对消息进行encryption,告诉您(在公开文本或其他消息中)如何encryption。 然后你可以用我的公钥解密这条消息,如果它变得可读,你就知道它是从我这里来的。

这种forms的encryption是相当大的计算机密集型,所以有时做的是用RSA技术encryption一次性的“密钥”,然后用密钥encryption剩余的消息,然后以第二种方式encryption我的签名。 然后,如果信息和签名是可读的,那么你就可以改变这个过程,只有你可以阅读,并确保我发送了信息。

要么

你可以访问这个链接更详细的解释。

API密钥和密钥如何工作?

谢谢。

如果你只是简单的authentication,那么你是对的,一个共享的秘密就足够了。

您可以使用它来告诉服务器您是谁,因为服务器将会收到您的特定消息,并用您的密钥进行散列。

但是,如果你想encryption一个消息呢? 由于哈希是不可逆的,所以不能使用散列来发送服务器不知道的消息。 在这种情况下,您可以使用非对称encryption,但同时采用公钥(API)和私钥(私钥)。

秘密密钥不能(没有严重的计算能力)从公钥中导出。 他们是相反的。

现在,如果你更多地谈论generics意义,那么你需要两个单独的键,一个告诉他们你是谁,另一个certificate你是你自己说的