Meeting Invite ICS Generator - Online Apple/Outlook Event
Fill in title, date, time, and location to generate a downloadable .ics meeting invitation. Works with all major calendars.
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.
Fill in title, date, time, and location to generate a downloadable .ics meeting invitation. Works with all major calendars.
Split a secret string into N shares where K are needed to recover. Educational cryptography demo. Uses simple XOR-based scheme. Local.
Enter your UK tax code and see an explanation of what the numbers and letters mean. Simple educational reference. No data stored.
Select two birth year animals to see a fun compatibility rating and description. Pure cultural entertainment.
Type a word to see all its homophones with definitions. Avoid embarrassing mistakes (their/there/they’re). Static dictionary.
Select tuning, scale length, and string gauge to calculate total tension on the neck. Build custom string sets.
Enter two premises and a conclusion (All A are B, Some C are not B, etc.) to check validity using Venn diagram rules.
Convert between currencies using manually updated or default rates. Great for estimation when offline. Local settings.
Get a random tattoo concept with style and placement suggestion. For fun and inspiration only. Not real art.
Choose colors and knots to design a friendship bracelet pattern. View the simulated final result.
Enter a first name and last name, plus a domain, to generate common email address patterns. For finding contacts.
Write a note encrypted with a passphrase, share the link. Once opened and decrypted, the note is deleted from browser storage. Local only.
Create a virtual scratch card with a hidden message or prize. Send the link; recipient scratchs with mouse/touch. Canvas-based.
Answer 5 silly questions and get a fruit personality result with a description. Harmless fun, local only.
Generate a sheet of random arithmetic problems (+, -, ×, ÷) with configurable digits. For kids and brain training.
Enter a decimal number and see detailed step‑by‑step conversion to binary, octal, and hex. For students.
Choose colors and knot types to design a bracelet pattern. See visual guide. Save locally.
Calculate the area of an irregular polygon by entering its vertex coordinates. Uses the shoelace formula. Pure math.
Peer into the virtual crystal ball to get a randomly generated, absurdly specific fortune. A fun start to your day.
Convert between digital storage units: bits, bytes, kilobytes, megabytes, gigabytes, and more. Binary and decimal interpretations available. A developer must-have.
Create a completely randomly generated alien script with fonts and syllable patterns. Translate your name into alien. Fun.
Compute probability for simple events, as well as permutations and combinations (nPr, nCr). Useful for statistics and game theory. Browser-based math.
Enter two names and get a playful love compatibility percentage. Purely for entertainment! All calculation happens instantly in your browser.
Translate hexadecimal numbers to decimal integers. Instantly see the magnitude. A simple, private utility for developers and mathematicians.
Convert any text to a long string of binary digits. Perfect for learning binary representation. Local conversion.
Test a regular expression against malicious inputs to detect catastrophic backtracking and ReDoS vulnerabilities. Educational.
Find the currency code (USD, EUR, JPY) for any country or reverse‑lookup the country from a code. Static reference.
Enter a year to check if it is a leap year. Shows the rule explanation and next/previous leap years. Simple reference.
Design circular string art by ticking nails and seeing simulated thread lines. Adjust number of nails and steps. Export pattern. Local only.
Click grid to place beads, choose colors, generate a loom pattern. Download as image.