Email Permutator - Online Generate All Possible Addresses
Enter a first name and last name, plus a domain, to generate common email address patterns. For finding contacts.
UD5 Toolkit
HMAC (Hash-based Message Authentication Code) is a cryptographic mechanism that combines a secret key with a hash function to verify both the integrity and authenticity of a message. It works by processing the message together with the secret key through two rounds of hashing—inner and outer padding—making it resistant to length extension attacks. Unlike a simple hash, HMAC can only be verified by someone who possesses the same secret key.
HMAC-SHA256 produces a 256-bit (32-byte) output and is widely used for API authentication, JWT signing, and general message integrity. HMAC-SHA512 produces a 512-bit (64-byte) output, offering a higher security margin. SHA-512 is often faster on 64-bit systems due to its internal 64-bit word size. For most applications, SHA-256 provides an excellent balance of security and performance. Use SHA-512 when you need the extra security margin or are working in high-assurance environments.
HMAC is ideal for:
Yes, HMAC is considered highly secure for API authentication when used correctly. Key security practices include: using a cryptographically random key of at least 32 bytes (256 bits), keeping the key strictly confidential (never expose it in client-side code), using HTTPS for all communications, and including a timestamp or nonce to prevent replay attacks. Major platforms like AWS, Google Cloud, and GitHub use HMAC-based signatures extensively.
The recommended key length depends on the hash algorithm:
Always use a cryptographically secure random generator to create keys. Avoid using predictable values like passwords or dictionary words.
A regular hash (like plain SHA-256) only provides integrity—anyone can compute the hash of a message. HMAC adds authentication through a secret key, meaning only parties with the key can generate or verify the code. Additionally, HMAC is resistant to length extension attacks that affect plain Merkle-Damgård hash functions like SHA-256 when used naively for message authentication.
HMAC alone is not suitable for password storage because it's designed to be fast, while password hashing should be deliberately slow to resist brute-force attacks. For password storage, use dedicated algorithms like bcrypt, scrypt, Argon2, or PBKDF2. However, HMAC can be used as part of a pepper strategy, where an application-wide secret key is combined with the password before hashing with a KDF.
Hex (Hexadecimal): Each byte is represented as two characters (0-9, a-f). A 32-byte HMAC-SHA256 becomes 64 hex characters. Hex is human-readable and easy to compare byte-by-byte.
Base64: Encodes 3 bytes into 4 characters using a 64-character alphabet (A-Z, a-z, 0-9, +, /). A 32-byte HMAC becomes 44 Base64 characters (with = padding). Base64 is more compact, making it ideal for HTTP headers and JSON payloads.
Choose based on your application's requirements—both encode the same underlying binary data.
HMAC-SHA1 is still considered secure for message authentication, despite SHA-1 being broken for collision resistance. This is because HMAC's security relies on the pseudorandomness of the underlying compression function, not collision resistance. However, for new applications, SHA-256 or SHA-512 is strongly recommended to align with modern security standards (FIPS 140-3, PCI DSS 4.0) and to future-proof your implementation.
Verification involves recomputing the HMAC on the server using the same secret key and comparing it with the received value. Always use a constant-time comparison to prevent timing attacks. Example in Node.js:
const crypto = require('crypto');
const receivedHmac = req.headers['x-signature'];
const computedHmac = crypto
.createHmac('sha256', secretKey)
.update(payload)
.digest('hex');
// Constant-time comparison
if (crypto.timingSafeEqual(
Buffer.from(receivedHmac),
Buffer.from(computedHmac)
)) {
// HMAC is valid
}
Most server frameworks (Express, Django, Rails, etc.) have built-in or library support for HMAC verification.
Enter a first name and last name, plus a domain, to generate common email address patterns. For finding contacts.
Get a random heartfelt or funny birthday message to write in a card. Choose from various tones. Local.
Convert across length, mass, speed, temperature, data, and more. Search any unit and type. Compact and fast.
Convert between digital storage units: bits, bytes, kilobytes, megabytes, gigabytes, and more. Binary and decimal interpretations available. A developer must-have.
Get a random tattoo concept with style and placement suggestion. For fun and inspiration only. Not real art.
Convert any text to a long string of binary digits. Perfect for learning binary representation. Local conversion.
Test sharing multiple files (images, PDFs) using the Web Share API. Check if the browser supports file sharing. Demo page.
Enter two names and get a playful love compatibility percentage. Purely for entertainment! All calculation happens instantly in your browser.
Select a destination language and generate a printable mini phrasebook with essential greetings, directions, food, and emergency phrases. Local only.
See exact mm and inch dimensions of ISO A-series and US paper sizes. Visual comparison tool. Also calculates weight based on GSM and dimensions.
Calculate output voltage from a two-resistor voltage divider. Enter input voltage and resistances to see Vout. Includes circuit schematic. No data sent.
Test a regular expression against malicious inputs to detect catastrophic backtracking and ReDoS vulnerabilities. Educational.
Roll virtual dice with animated 3D spins. Choose any number and type. See total and individual results. Fun for games.
Enter a three‑letter currency code like USD or EUR and instantly see the corresponding symbol and number of decimals. Quick developer reference.
Answer 5 silly questions and get a fruit personality result with a description. Harmless fun, local only.
Create a virtual scratch card with a hidden message or prize. Send the link; recipient scratchs with mouse/touch. Canvas-based.
Type a number and see its full English word representation (e.g., 123 → one hundred twenty‑three). Supports large numbers.
Combine two random elements and get a surprising result. Inspired by Little Alchemy. Infinite ideas. All local.
Type a word to see all its homophones with definitions. Avoid embarrassing mistakes (their/there/they’re). Static dictionary.
Estimate make probability of a putt based on distance and skill rating. For disc golf enthusiasts. Fun statistical tool, no data upload.
Calculate the total resistance of up to 10 resistors in parallel. Enter values and see the combined resistance instantly. Local electronics helper.
Generate printable math worksheets for addition, subtraction, multiplication, and division. Choose difficulty and number of problems. Answer key included.
Calculate the area of an irregular polygon by entering its vertex coordinates. Uses the shoelace formula. Pure math.
Convert between scientific notation (a × 10^n) and decimal form. Also supports engineering notation. Instant, local.
Enter CMYK values and find the closest Pantone Solid Coated color. For print design reference. Client‑side lookup.
Compute probability for simple events, as well as permutations and combinations (nPr, nCr). Useful for statistics and game theory. Browser-based math.
Divide a total bill among multiple people considering tax and service fees. See exactly who pays what.
Design circular string art by ticking nails and seeing simulated thread lines. Adjust number of nails and steps. Export pattern. Local only.
Translate hexadecimal numbers to decimal integers. Instantly see the magnitude. A simple, private utility for developers and mathematicians.
Evaluate the Gamma function for real and complex inputs (real part). Extension of factorial. Academic mathematics tool.