API key authentication in Rest API - Time & Space Complexity
When checking API key authentication, we want to know how the time to verify a key changes as more keys exist.
We ask: How does the process scale when the number of stored API keys grows?
Analyze the time complexity of the following code snippet.
// Example: Check if provided API key is valid
function isValidApiKey(providedKey, storedKeys) {
for (let key of storedKeys) {
if (key === providedKey) {
return true;
}
}
return false;
}
This code checks each stored API key one by one to find a match with the provided key.
Identify the loops, recursion, array traversals that repeat.
- Primary operation: Looping through the list of stored API keys.
- How many times: Up to once for each stored key until a match is found or all keys checked.
As the number of stored keys grows, the time to check can grow roughly the same amount.
| Input Size (n) | Approx. Operations |
|---|---|
| 10 | Up to 10 key checks |
| 100 | Up to 100 key checks |
| 1000 | Up to 1000 key checks |
Pattern observation: The time grows directly with the number of keys; doubling keys roughly doubles checks.
Time Complexity: O(n)
This means the time to verify an API key grows linearly with the number of stored keys.
[X] Wrong: "Checking an API key always takes the same time no matter how many keys there are."
[OK] Correct: Because the code may need to look through many keys before finding a match or deciding none match, so more keys usually mean more work.
Understanding how checking API keys scales helps you design faster and smarter authentication systems, a useful skill in many real projects.
"What if we stored the API keys in a hash map instead of a list? How would the time complexity change?"