Format conversion utilities for transforming between different data representations used in cryptographic operations. All encoders provide stringify/parse methods to convert between WordArray objects and string representations.
Convert between WordArray and hexadecimal string representation.
/**
* Hexadecimal encoding object with stringify/parse methods
*/
CryptoJS.enc.Hex {
/**
* Converts WordArray to hexadecimal string
* @param wordArray - WordArray to convert
* @returns Hexadecimal string representation
*/
stringify(wordArray): string;
/**
* Converts hexadecimal string to WordArray
* @param hexStr - Hexadecimal string to parse
* @returns WordArray representation
*/
parse(hexStr): WordArray;
}Usage Examples:
var CryptoJS = require("crypto-js");
// WordArray to hex string
var data = CryptoJS.enc.Utf8.parse("Hello World");
var hexString = CryptoJS.enc.Hex.stringify(data);
console.log("Hex:", hexString); // "48656c6c6f20576f726c64"
// Hex string to WordArray
var parsed = CryptoJS.enc.Hex.parse("48656c6c6f20576f726c64");
console.log("Parsed:", CryptoJS.enc.Utf8.stringify(parsed)); // "Hello World"
// Using with hash functions
var hash = CryptoJS.SHA256("test");
console.log("Default (hex):", hash.toString());
console.log("Explicit hex:", hash.toString(CryptoJS.enc.Hex));Convert between WordArray and Base64 string representation.
/**
* Base64 encoding object with stringify/parse methods
*/
CryptoJS.enc.Base64 {
/**
* Converts WordArray to Base64 string
* @param wordArray - WordArray to convert
* @returns Base64 string representation
*/
stringify(wordArray): string;
/**
* Converts Base64 string to WordArray
* @param base64Str - Base64 string to parse
* @returns WordArray representation
*/
parse(base64Str): WordArray;
}Usage Examples:
var CryptoJS = require("crypto-js");
// WordArray to Base64 string
var data = CryptoJS.enc.Utf8.parse("Hello World");
var base64String = CryptoJS.enc.Base64.stringify(data);
console.log("Base64:", base64String); // "SGVsbG8gV29ybGQ="
// Base64 string to WordArray
var parsed = CryptoJS.enc.Base64.parse("SGVsbG8gV29ybGQ=");
console.log("Parsed:", CryptoJS.enc.Utf8.stringify(parsed)); // "Hello World"
// Using with encryption
var encrypted = CryptoJS.AES.encrypt("message", "key");
console.log("Default (Base64):", encrypted.toString());
console.log("Explicit Base64:", encrypted.toString(CryptoJS.enc.Base64));URL-safe Base64 encoding without padding characters.
/**
* Base64URL encoding object with stringify/parse methods
*/
CryptoJS.enc.Base64url {
/**
* Converts WordArray to Base64URL string
* @param wordArray - WordArray to convert
* @returns Base64URL string representation (URL-safe, no padding)
*/
stringify(wordArray): string;
/**
* Converts Base64URL string to WordArray
* @param base64urlStr - Base64URL string to parse
* @returns WordArray representation
*/
parse(base64urlStr): WordArray;
}Usage Examples:
var CryptoJS = require("crypto-js");
var data = CryptoJS.enc.Utf8.parse("Hello World>>>");
// Compare Base64 vs Base64URL
var base64 = CryptoJS.enc.Base64.stringify(data);
var base64url = CryptoJS.enc.Base64url.stringify(data);
console.log("Base64:", base64); // "SGVsbG8gV29ybGQ+Pj4="
console.log("Base64URL:", base64url); // "SGVsbG8gV29ybGQ-Pj4"
// JWT token encoding example
function encodeJWTPart(obj) {
var json = JSON.stringify(obj);
var wordArray = CryptoJS.enc.Utf8.parse(json);
return CryptoJS.enc.Base64url.stringify(wordArray);
}
var header = encodeJWTPart({alg: "HS256", typ: "JWT"});
var payload = encodeJWTPart({sub: "1234567890", name: "John Doe"});
console.log("JWT parts:", header + "." + payload);Convert between WordArray and UTF-8 string representation.
/**
* UTF-8 encoding object with stringify/parse methods
*/
CryptoJS.enc.Utf8 {
/**
* Converts WordArray to UTF-8 string
* @param wordArray - WordArray to convert
* @returns UTF-8 string representation
*/
stringify(wordArray): string;
/**
* Converts UTF-8 string to WordArray
* @param utf8Str - UTF-8 string to parse
* @returns WordArray representation
*/
parse(utf8Str): WordArray;
}Usage Examples:
var CryptoJS = require("crypto-js");
// String to WordArray
var message = "Hello δΈη! π";
var wordArray = CryptoJS.enc.Utf8.parse(message);
console.log("WordArray words:", wordArray.words);
console.log("Significant bytes:", wordArray.sigBytes);
// WordArray back to string
var reconstructed = CryptoJS.enc.Utf8.stringify(wordArray);
console.log("Reconstructed:", reconstructed); // "Hello δΈη! π"
// Using with encryption/decryption
var encrypted = CryptoJS.AES.encrypt(message, "key");
var decrypted = CryptoJS.AES.decrypt(encrypted, "key");
var decryptedText = CryptoJS.enc.Utf8.stringify(decrypted);
console.log("Decrypted:", decryptedText);Convert between WordArray and UTF-16 string representations.
/**
* UTF-16 Big Endian encoding object
*/
CryptoJS.enc.Utf16 {
stringify(wordArray): string;
parse(utf16Str): WordArray;
}
/**
* UTF-16 Big Endian encoding (alias for Utf16)
*/
CryptoJS.enc.Utf16BE {
stringify(wordArray): string;
parse(utf16Str): WordArray;
}
/**
* UTF-16 Little Endian encoding object
*/
CryptoJS.enc.Utf16LE {
stringify(wordArray): string;
parse(utf16Str): WordArray;
}Usage Examples:
var CryptoJS = require("crypto-js");
var message = "Hello World";
// UTF-16 Big Endian (default)
var utf16BE = CryptoJS.enc.Utf16.parse(message);
console.log("UTF-16 BE:", CryptoJS.enc.Hex.stringify(utf16BE));
// UTF-16 Little Endian
var utf16LE = CryptoJS.enc.Utf16LE.parse(message);
console.log("UTF-16 LE:", CryptoJS.enc.Hex.stringify(utf16LE));
// Convert back
console.log("BE to string:", CryptoJS.enc.Utf16.stringify(utf16BE));
console.log("LE to string:", CryptoJS.enc.Utf16LE.stringify(utf16LE));Convert between WordArray and Latin1 (ISO-8859-1) string representation.
/**
* Latin1 encoding object with stringify/parse methods
*/
CryptoJS.enc.Latin1 {
/**
* Converts WordArray to Latin1 string
* @param wordArray - WordArray to convert
* @returns Latin1 string representation
*/
stringify(wordArray): string;
/**
* Converts Latin1 string to WordArray
* @param latin1Str - Latin1 string to parse
* @returns WordArray representation
*/
parse(latin1Str): WordArray;
}var CryptoJS = require("crypto-js");
// Working with binary data
var binaryArray = new Uint8Array([72, 101, 108, 108, 111]);
// Convert Uint8Array to WordArray
var wordArray = CryptoJS.lib.WordArray.create(binaryArray);
console.log("Binary as hex:", CryptoJS.enc.Hex.stringify(wordArray));
// Different representations of the same data
console.log("As UTF-8:", CryptoJS.enc.Utf8.stringify(wordArray));
console.log("As Base64:", CryptoJS.enc.Base64.stringify(wordArray));
console.log("As Latin1:", CryptoJS.enc.Latin1.stringify(wordArray));var CryptoJS = require("crypto-js");
var message = "Secret Message";
// Chain: String -> WordArray -> Hash -> Different encodings
var wordArray = CryptoJS.enc.Utf8.parse(message);
var hash = CryptoJS.SHA256(wordArray);
console.log("Original:", message);
console.log("Hash (Hex):", hash.toString());
console.log("Hash (Base64):", CryptoJS.enc.Base64.stringify(hash));
console.log("Hash (Base64URL):", CryptoJS.enc.Base64url.stringify(hash));
// Parse Base64 hash back to WordArray
var hashFromBase64 = CryptoJS.enc.Base64.parse(CryptoJS.enc.Base64.stringify(hash));
console.log("Roundtrip match:", hash.toString() === hashFromBase64.toString());var CryptoJS = require("crypto-js");
function isValidBase64(str) {
try {
var parsed = CryptoJS.enc.Base64.parse(str);
var stringified = CryptoJS.enc.Base64.stringify(parsed);
return stringified === str;
} catch (e) {
return false;
}
}
function isValidHex(str) {
try {
var parsed = CryptoJS.enc.Hex.parse(str);
var stringified = CryptoJS.enc.Hex.stringify(parsed);
return stringified.toLowerCase() === str.toLowerCase();
} catch (e) {
return false;
}
}
// Test validation
console.log("Valid Base64:", isValidBase64("SGVsbG8=")); // true
console.log("Invalid Base64:", isValidBase64("Invalid!")); // false
console.log("Valid Hex:", isValidHex("48656c6c6f")); // true
console.log("Invalid Hex:", isValidHex("xyz123")); // false// Encoder Interface
Encoder {
/**
* Converts WordArray to string representation
* @param wordArray - WordArray to convert
* @returns String representation
*/
stringify(wordArray: WordArray): string;
/**
* Converts string to WordArray representation
* @param str - String to parse
* @returns WordArray representation
*/
parse(str: string): WordArray;
}
// WordArray (used by all encoders)
WordArray {
words: number[]; // Array of 32-bit words
sigBytes: number; // Number of significant bytes
toString(encoder?): string; // Convert using encoder (hex by default)
concat(wordArray): WordArray; // Concatenate with another WordArray
clamp(): void; // Remove insignificant bytes
clone(): WordArray; // Create a copy
}