# Rainbow Tables

A rainbow table is a precomputed table for caching the outputs of a cryptographic hash function, usually for cracking password hashes. They are an efficient way to perform time-memory trade-off attacks.

#### Size of Rainbow Table

Given:

* Each rainbow table entry is composed of 44 bytes (12 bytes + 32 bytes).
* To crack a passphrase, attackers would need a rainbow table that covers all possible combinations of characters of length 12.

#### Calculation

* **Number of possible combinations:**
  * Assuming a character pool of 94 characters (26 lowercase + 26 uppercase + 10 digits + 32 special characters)
  * Number of combinations = 94^12
  * Approximate number of combinations ≈ 4.7 × 10^23
* **Size of the rainbow table:**
  * Size per entry = 44 bytes
  * Total Size (in bytes) = 44 bytes \* 4.7 × 10^23
  * Impossible to store within the current storage capabilities

Even with powerful storage solutions, creating and storing a comprehensive rainbow table for this passphrase space is practically infeasible due to the enormous size required.

### Additional Consideration: The Role of the PIN

In the above analysis, we focused on the storage requirements for a passphrase space, but the actual security is exponentially higher because the pair of **passphrase and PIN** determines the private key and wallet address.&#x20;

Rainbow tables are only effective when an attacker can precompute hashes for common inputs and reuse them across many different targets.&#x20;

However, because the **PIN** acts as a personalized salt, an attacker would be forced to precompute a unique, near-infinite table for every possible PIN variation, which is practically impossible. This dual-input design ensures that even if a common passphrase is used, the specific combination of both secrets effectively neutralizes precomputed attacks and protects the wallet from time-memory trade-off techniques.<br>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.mybucks.online/concept/security-consideration/rainbow-tables.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
