Base32 Encoder & Decoder

Encode and decode text into RFC 4648 compliant Base32 representations for 2FA TOTP keys.

🛡️ 100% Client-Side Processing: Secrets and strings are encoded locally without network requests.
0 chars | 0 lines(Ctrl+Enter) Input Text / Base32 Secret
0 chars | 0 lines(Ctrl+Enter) Output Result

Base32 Encoding: RFC 4648 5-bit Grouping, TOTP Keys & Crockford Standards

Base32 encodes binary payloads into a 32-character case-insensitive ASCII alphabet using 5-bit grouping (2^5 = 32). It eliminates visually ambiguous characters (like 0, 1, 8, 9) and serves as the universal encoding standard for TOTP two-factor authentication secrets.

🔒 Cryptographic Security & Memory Defense Advisory

Client-side cryptographic operations require defensive programming to protect sensitive keys and data from runtime introspection:

  • CSPRNG Nonce Generation: Always use window.crypto.getRandomValues() for IVs, salts, and nonces. Never use pseudo-random generators like Math.random() for key derivation or stream initialization.
  • Timing Attack Mitigation: Evaluate authentication digests and HMAC tags using constant-time comparison (e.g. crypto.timingSafeEqual) to prevent microsecond side-channel timing leaks.
  • Key Hygiene & GC Deallocation: Overwrite sensitive plaintext buffers and key material in memory immediately after cipher execution to minimize memory dump exposure windows.

Cryptographic Parameter Matrix & Specifications

Cryptographic AttributeStandard Requirement / Security Bound
IETF StandardRFC 4648 §6 (The Base32 Alphabet: A-Z and 2-7)
Bit Slicing5 input bytes (40 bits) map into 8 output characters (5 bits each)
2FA Security PrimitiveStandard secret format for Google Authenticator & RFC 6238 TOTP
Padding CharacterEquals sign (=) for byte lengths not divisible by 5

Audited Cryptographic Implementation Code

JavaScript Base32 Encoder

function base32Encode(buffer) {
  const alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ234567";
  let bits = 0, value = 0, output = '';
  for (let i = 0; i < buffer.length; i++) {
    value = (value << 8) | buffer[i];
    bits += 8;
    while (bits >= 5) {
      output += alphabet[(value >>> (bits - 5)) & 31];
      bits -= 5;
    }
  }
  if (bits > 0) output += alphabet[(value << (5 - bits)) & 31];
  while (output.length % 8 !== 0) output += '=';
  return output;
}

Python 3 (base64 module)

import base64

secret = b"TOTP_SECRET_KEY_123"
encoded = base64.b32encode(secret).decode('ascii')
decoded = base64.b32decode(encoded).decode('utf-8')
print("Base32 Key:", encoded)

Zero-Knowledge Architecture & Key Lifecycle Governance

All cryptographic operations execute exclusively within your client browser memory using the native Web Cryptography API (W3C WebCrypto). Unencrypted plaintext payloads, private key pairs, and secret parameters are never transmitted across the network, stored in cookies, or written to disk. When implementing cryptographic modules in backend environments, enforce strict secret isolation, rotate master encryption keys using hardware-backed KMS solutions, and zero out plaintext byte buffers immediately following block cipher operations. Adhere to FIPS 140-3 guidelines for validated cryptographic boundary controls and secure entropy source verification.

Official Security Standards & RFC References