我遇到了许多API,它们为用户提供了一个API密钥和一个秘密。但我的问题是:两者之间有什么区别?
在我看来,一把钥匙就足够了。假设我有钥匙,只有我和服务器知道。我用这个键创建了一个HMAC哈希,并进行了一个API调用。在服务器上,我们再次创建HMAC哈希,并将其与发送的哈希进行比较。如果是相同的,则呼叫经过身份验证。
那为什么要用两把钥匙呢?
编辑:或者该API密钥用于查找API机密?
简单的答案,如果我理解正确的话...
如果您使用API密钥进行加密,服务如何知道谁在联系他们?他们将如何解密该消息?
您使用API密钥来声明您是谁,这是您以纯文本发送的内容。您不会发送给任何人的密钥。只需将其用于加密即可。然后你发送加密信息。如果不发送用于加密的密钥,则无法达到加密目的。
密钥加密依赖于使用相同的密钥对消息进行编码,然后再对其进行解码。因此,只有那些知道“秘密”的人才能阅读信息。
RSA安全性基于两个匹配密钥。每个用户都有一个公钥,每个人都可以(应该)知道它。还有一个只有html" target="_blank">用户才应该知道的私钥。用公钥加密的消息只能用私钥解密,反之亦然。
因此,如果我想给你发送一条只有你才能阅读的消息,我会(从网络上)获得你的公钥,用该密钥加密消息,而你是唯一能解密它的人。
或者,如果我想向你证明我发送了一条消息,我可以用我的私钥加密该消息,告诉你(在公开文本或其他消息中)它是如何加密的。然后你可以用我的公钥解密消息,如果它变得可读,你就知道它来自我。
这种形式的加密是相当计算机密集型的,所以有时要做的是,使用RSA技术对一次性“密钥”进行加密,然后用密钥对消息的其余部分进行加密,然后用第二种方式对我的签名进行加密。然后你将这个过程颠倒过来,这样如果消息和签名是可读的,你和只有你可以阅读它,并且你可以确保我发送了消息。
或
您可以访问此链接以获得更详细的解释。
API密钥和密钥如何工作?
你需要两个独立的钥匙,一个告诉他们你是谁,另一个证明你是你所说的人。
“密钥”是你的用户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-