JWT, Base64, Base32, and QR Codes
Cryptology Monster provides utilities for decoding and verifying selected JSON Web Tokens, converting text encodings, and creating or reading QR codes. These tools work with data representation and authentication, but not all of them provide cryptographic protection.
JSON Web Tokens (JWT)
A JWT commonly consists of three dot-separated components:
header.payload.signatureThe header and payload are typically Base64url-encoded JSON.
Decode a JWT
- Select JWT.
- Paste the token.
- Click Decode.
- Review the header, payload, and signature.
Decoded Output
The tool displays the header and payload as formatted JSON.
A header might resemble:
{
"alg": "HS256",
"typ": "JWT"
}A payload might resemble:
{
"sub": "1234567890",
"role": "reader"
}Decoding does not verify the token.
Anyone can decode ordinary JWT header and payload data.
Do not place confidential information in an unencrypted JWT payload.
JWT Signature Verification
Cryptology Monster supports HMAC-based JWT verification.
Supported Algorithms
| JWT Algorithm | Cryptographic Hash |
|---|---|
| HS256 | SHA-256 |
| HS384 | SHA-384 |
| HS512 | SHA-512 |
Usage
- Paste the JWT.
- Enter its shared secret.
- Enable Secret is hex if the secret is hexadecimal.
- Click *Verify Signature (HS)**.
- Review the result.
The application reads the token's alg header to select the corresponding HMAC algorithm.
Verification Results
HS* signature is VALIDor:
Invalid signatureImportant Limitations
The implementation verifies HMAC signatures only.
It does not support RS256, ES256, EdDSA, or other asymmetric JWT signature algorithms.
It also does not independently validate claims such as:
exp— Expirationnbf— Not beforeiss— Issueraud— Audience
A valid signature alone does not establish that a token is authorized for a particular application.
Do not use this utility as a complete JWT authorization system.
Base64 Encoding
Base64 converts data into printable characters.
Encode
- Select Base64.
- Enter text.
- Click Encode.
Example:
Hellobecomes:
SGVsbG8=Decode
Enter:
SGVsbG8=and click Decode to recover:
HelloLimitations
The implementation uses JavaScript's native btoa() and atob() functions directly.
These operate on byte-oriented character strings and do not automatically perform UTF-8 conversion for arbitrary Unicode text.
Non-Latin characters may fail to encode or may not decode as expected without conversion.
Base32 Encoding
Base32 represents data using the following alphabet:
ABCDEFGHIJKLMNOPQRSTUVWXYZ234567Encode
- Select Base32.
- Enter text.
- Click Encode.
Example:
Hellobecomes:
JBSWY3DPDecode
Paste:
JBSWY3DPand click Decode to recover:
HelloImplementation Notes
- Input is converted to uppercase during decoding.
- Trailing
=padding is removed before decoding. - Unrecognized characters are skipped.
- The encoder does not append standard
=padding. - Arbitrary Unicode text is not handled through an explicit UTF-8 conversion.
The implementation works best with byte-compatible text.
Encoding Is Not Encryption
| Format | Confidentiality | Secret Key Required |
|---|---|---|
| Base64 | No | No |
| Base32 | No | No |
| AES-GCM | Yes, with appropriate key security | Yes |
| OpenPGP Encryption | Yes, with appropriate key security | Yes |
Do not use Base64 or Base32 alone to protect confidential information.
QR Code Generator
Cryptology Monster generates QR codes from text.
Usage
- Select QR.
- Enter the text to encode.
- Click Generate QR.
- Review the generated code.
- Download or copy the QR image.
Output
The generator creates a QR code with:
| Property | Value |
|---|---|
| Dimensions | 256 × 256 pixels |
| Error correction | Medium (M) |
| Download format | PNG |
| Filename | qrcode.png |
Available Actions
- Download PNG
- Copy to Clipboard
Copying an image to the clipboard requires browser support.
Example Input
https://www.qvlx.comThe generated QR code represents the supplied text.
QR Code Decoder
The decoder reads QR codes from uploaded images.
Usage
- Select QR.
- Locate Decode QR.
- Upload an image containing a QR code.
- Click Decode from Image.
- Review the extracted data.
The application uses jsQR to inspect the image pixels.
If no code is detected, it reports:
No QR code found.QR Code Security
QR codes are a convenient method of encoding information.
They do not establish that embedded content is trustworthy.
A QR code may contain an unsafe website link or other malicious instructions.
Always inspect decoded content before opening links or acting on the embedded information.
Dependencies
QR operations load these libraries as needed:
| Operation | Library |
|---|---|
| Generation | qrcodejs 1.0.0 |
| Decoding | jsQR 1.4.0 |
Tip: JWT decoding, Base64, Base32, and QR codes are primarily data-handling tools. Use a cryptographic verification or encryption tool when authenticity or confidentiality is required.
Updated 9 days ago
