当前位置: 首页 > 知识库问答 >
问题:

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

狄旻
2023-03-14

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

在我看来,一把钥匙就足够了。假设我有钥匙,只有我和服务器知道。我用这个键创建了一个HMAC哈希,并进行了一个API调用。在服务器上,我们再次创建HMAC哈希,并将其与发送的哈希进行比较。如果是相同的,则呼叫经过身份验证。

那为什么要用两把钥匙呢?

编辑:或者该API密钥用于查找API机密?

共有3个答案

阳勇
2023-03-14

简单的答案,如果我理解正确的话...

如果您使用API密钥进行加密,服务如何知道谁在联系他们?他们将如何解密该消息?

您使用API密钥来声明您是谁,这是您以纯文本发送的内容。您不会发送给任何人的密钥。只需将其用于加密即可。然后你发送加密信息。如果不发送用于加密的密钥,则无法达到加密目的。

时同
2023-03-14

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

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

因此,如果我想给你发送一条只有你才能阅读的消息,我会(从网络上)获得你的公钥,用该密钥加密消息,而你是唯一能解密它的人。

或者,如果我想向你证明我发送了一条消息,我可以用我的私钥加密该消息,告诉你(在公开文本或其他消息中)它是如何加密的。然后你可以用我的公钥解密消息,如果它变得可读,你就知道它来自我。

这种形式的加密是相当计算机密集型的,所以有时要做的是,使用RSA技术对一次性“密钥”进行加密,然后用密钥对消息的其余部分进行加密,然后用第二种方式对我的签名进行加密。然后你将这个过程颠倒过来,这样如果消息和签名是可读的,你和只有你可以阅读它,并且你可以确保我发送了消息。

您可以访问此链接以获得更详细的解释。

API密钥和密钥如何工作?

柳墨一
2023-03-14

你需要两个独立的钥匙,一个告诉他们你是谁,另一个证明你是你所说的人。

“密钥”是你的用户ID,“秘密”是你的密码。他们只是使用“密钥”和“秘密”术语,因为他们就是这样实现的。

 类似资料:
  • 我试图保护Spring BootAPIendpoint。我希望只传递api密钥和秘密作为头的一部分来调用api。我尝试了这个链接中发布的代码。但是在头中使用授权调用api时拒绝访问。使用API key和secret保护Spring Boot API我想知道我应该作为头部的一部分传递什么,这样我就可以从API获得成功的响应。我做了以下步骤:我在application.properties中添加了以下

  • 我试图编译代码时遇到了这个异常。我已经安装了eclips工具包,我正在使用EclipseKepler 异常线程"main"java.lang.NoClassDefFoundError: org/apache/共用/日志/LogFactory在com.amazonaws.Amazon WebServiceClient.(Amazon WebServiceClient.java:56)在test_to

  • 我目前正在使用Java创建应用程序,我用java谷歌了密码加密,但结果是如此巨大,我感到不知所措。我将如何使用Java加密和解密密码?加密和解密密码的最佳实践是什么?我猜MD5是行不通的,因为它是单向哈希。我使用struts2作为我的框架,想知道他们是否提供密码加密

  • 使用AKV管理存储帐户:https://docs.microsoft.com/en-us/Azure/key-vault/key-vault-overview-storage-keys-powershell#manage-storage-account-keys 使用Azure Automation进行密钥循环:https://docs.microsoft.com/en-us/Azure/key-