RSA verify
Check whether an RSA signature is authentic — PKCS#1 v1.5 or PSS, SHA-256/384/512 — against a public key. Runs in your browser; nothing is uploaded.
About this tool
RSA verify checks whether an RSA signature is authentic for a given message and public key. If verification succeeds, the message came from the holder of the matching private key and was not altered in transit.
- Schemes:
pkcs1v15(RSASSA-PKCS#1 v1.5 — the classic scheme) orpss(RSASSA-PSS — recommended for new systems). The scheme must match how the signature was produced. - Hashes: SHA-256 (default), SHA-384, or SHA-512 — also must match the signer.
- Key formats: PEM, either SPKI (
-----BEGIN PUBLIC KEY-----) or PKCS#1 (-----BEGIN RSA PUBLIC KEY-----). - Signature: base64-encoded (the raw signature bytes, as produced by the RSA sign tool or any standard RSA library).
Privacy
Everything runs in your browser via WebAssembly — the message, signature, and public key are never uploaded to a server. You can also run it from the gizza CLI or inside a gizza chat.
Notes
- A result of VALID means the signature matches; INVALID means it does not (wrong key, tampered message, or a mismatched scheme/hash).
- The scheme and hash must be the same ones used when signing. If you are not sure, try the common defaults (PKCS#1 v1.5 + SHA-256) first.
- Need to create a signature instead? See the RSA sign tool. Need a key pair? See the RSA key-pair generator tool.
FAQ
The signature is definitely right — why do I get INVALID?
Nine times out of ten the scheme or hash doesn't match the signer. A PSS signature will never verify under pkcs1v15 (and vice versa), and SHA-256 vs SHA-512 are just as incompatible. Check what the signing side used; if unsure, start with PKCS#1 v1.5 + SHA-256, then try PSS. A wrong public key or an altered message (even a trailing newline) also yields INVALID.
What format must the signature be in?
Standard base64 of the raw signature bytes — exactly what OpenSSL's
base64 output or any RSA library gives you. Hex signatures need converting to
base64 first; malformed base64 is reported as an input error, distinct from a
clean INVALID verdict.
Which public-key formats are accepted?
PEM in either form: SPKI (-----BEGIN PUBLIC KEY-----) or PKCS#1
(-----BEGIN RSA PUBLIC KEY-----). Both are tried automatically, so you don't
need to know which one you have. Private keys are not accepted — verification
only ever needs the public half.
Is an INVALID result the same thing as an error?
No. INVALID is a real cryptographic verdict: the inputs parsed fine but the signature does not match the message under that key/scheme/hash. An error means an input was malformed (bad PEM, bad base64, unknown scheme or hash) and verification never ran.
Developer & Automation Access
Run it from the terminal
Same engine as this page, headless — via the gizza CLI:
gizza tool rsa-verify "The original message that was signed" 'signature=The base64-encoded signature to verify' 'public_key=-----BEGIN PUBLIC KEY-----
...
-----END PUBLIC KEY-----'New to the CLI? Get gizza →
Open it by URL
Pre-fill and auto-run this tool with query parameters — the names match the API/CLI:
https://gizza.ai/tools/rsa-verify/?message=The%20original%20message%20that%20was%20signed&signature=The%20base64-encoded%20signature%20to%20verify&public_key=-----BEGIN%20PUBLIC%20KEY-----%0A...%0A-----END%20PUBLIC%20KEY-----&scheme=pkcs1v15&hash=sha256Machine-readable descriptor: tool.json — title + parameters JSON Schema for agents.
