Hash Generator Guide: SHA-256, Password Hashing, and Verification
Learn what SHA-256 and other hashes can prove, how to verify a digest safely, and why passwords need Argon2id, scrypt, bcrypt, or PBKDF2 instead.
Primary source: authoritative reference
A hash generator turns an input into a fixed-length digest. That digest can help detect an accidental or malicious change, but it is not a signature, password-storage scheme, or proof of who published the input.
The distinction matters: a matching digest is useful only when the expected value comes from a source you already trust.
File and text checksums
Compare a file with its trusted SHA-256 digest
Select a file up to 32 MiB for SHA-256 or SHA-512 comparison without uploading it. Text hashing is also available; legacy outputs are for compatibility and bcrypt is for learning or testing.
Open the Hash Generator →What a cryptographic hash can and cannot prove
NIST's Secure Hash Standard defines algorithms that create message digests used to detect whether a message changed after the digest was generated. Useful properties include:
- Deterministic output: the same bytes and algorithm produce the same digest.
- Preimage resistance: given a digest, recovering a matching original input should be infeasible.
- Second-preimage resistance: given one input, finding a different input with the same digest should be infeasible.
- Collision resistance: finding any two distinct inputs with the same digest should be infeasible.
A digest alone does not establish publisher identity or authorization. If an attacker can replace both a download and the digest shown beside it, the values can still match. For release verification, obtain the expected digest from an authenticated channel and prefer a valid digital signature when the publisher provides one.
Choose the algorithm for the job
| Need | Appropriate choice | Avoid | | --- | --- | --- | | Compare content against a trusted digest | SHA-256 or SHA-512 | MD5 or SHA-1 for a security decision | | Store application passwords | Argon2id; scrypt if Argon2id is unavailable; approved PBKDF2 where required | Fast general-purpose hashes such as MD5, SHA-1, or SHA-256 | | Support an existing bcrypt deployment | bcrypt with a tuned work factor and documented input limits | Treating a browser-generated example as a production storage workflow | | Match a legacy checksum field | The required legacy algorithm, clearly labeled | Interpreting a legacy checksum as proof of authenticity |
NIST is transitioning away from SHA-1 for security applications. MD5 also has practical collision attacks and is unsuitable whenever collision resistance matters. SHA-256 remains a standard choice for modern digest comparison, but password storage has different requirements.
Verify a downloaded file safely
Suppose a vendor publishes a SHA-256 digest over an authenticated page or signed release. Compute the digest over the exact downloaded bytes and compare every character:
sha256sum release.tar.gz
On macOS:
shasum -a 256 release.tar.gz
If the values differ, stop. The cause may be corruption, a different release artifact, or tampering. If they match, you have shown that your file matches the bytes represented by the trusted digest; you have not independently proven who created those bytes.
The OpsecForge file checksum verifier accepts a local file up to 32 MiB and compares SHA-256 or SHA-512 against a pasted hexadecimal digest. It reads file bytes in the browser without uploading them. The size limit bounds memory use because the Web Crypto digest API reads the whole input rather than streaming it. Use the operating-system commands above for larger files. On Windows, use Get-FileHash ./release.zip -Algorithm SHA256 in PowerShell.
Password hashing is deliberately different
Fast digests are good for checksums and bad for stored passwords because an attacker with a stolen database can test guesses quickly. OWASP recommends Argon2id for new systems and scrypt when Argon2id is unavailable. Bcrypt is primarily a legacy option when Argon2id and scrypt are not available; many bcrypt implementations also limit inputs to 72 bytes.
Production password storage should include:
- a unique random salt handled by the password-hashing library;
- a work factor and memory setting measured on the authentication system;
- a migration plan that upgrades parameters after a successful login;
- rate limiting and multi-factor authentication around the login flow;
- an established library rather than custom cryptographic code.
Do not paste real passwords, API keys, or other secrets into an ad hoc utility. Browser-local processing reduces transmission risk, but it does not turn a general-purpose tool into your application's credential-storage pipeline.
Git object IDs are not a universal authenticity guarantee
Git uses hashes to name content and detect corruption. Git's own transition documentation explains that SHA-1 is weak and identifies SHA-256 as its successor. Repository authenticity still relies on controls such as trusted transport and verified commit or tag signatures; an object ID by itself does not identify its author.
Practical checklist
- [ ] Define whether you need change detection, authenticity, or password protection.
- [ ] Use SHA-256 or SHA-512 for a modern digest comparison.
- [ ] Obtain the expected digest through an authenticated source.
- [ ] Prefer a verified publisher signature when one is available.
- [ ] Use Argon2id or another purpose-built password-hashing function for stored passwords.
- [ ] Keep MD5 and SHA-1 out of new security-sensitive designs.
- [ ] Treat browser hash utilities as inspection and testing aids, not production trust anchors.
Primary guidance
- NIST Secure Hash Standard (FIPS 180-4)
- NIST hash-functions project and SHA-1 transition
- OWASP Password Storage Cheat Sheet
- Git hash-function transition documentation
Related guides and tools
- See how hash collisions affect integrity checks.
- Use the focused SHA Hash Generator for SHA-1, SHA-256, and SHA-512 text digests.
- Open the Hash Generator for SHA-256, legacy digest compatibility, and a bcrypt demonstration.