zbase32
This performs zbase32 encoding
Created by: hackvertor
Installed 1 times
Category: Convert
Created on: Thursday, October 10, 2024 at 11:59:00 AM
Updated on: Thursday, October 10, 2024 at 11:59:00 AM
Tag arguments
[]
Code
class zbase32 {
encode(input) {
const zBase32chars = "ybndrfg8ejkmcpqxot1uwisza345h769";
let output = "";
let buffer = 0;
let bitsLeft = 0;
for (let i = 0; i < input.length; i++) {
buffer = (buffer << 8) | input.charCodeAt(i);
bitsLeft += 8;
while (bitsLeft >= 5) {
output += zBase32chars.charAt((buffer >> (bitsLeft - 5)) & 31);
bitsLeft -= 5;
}
}
if (bitsLeft > 0) {
output += zBase32chars.charAt((buffer << (5 - bitsLeft)) & 31);
}
return output;
}
decode(input) {
const zBase32chars = "ybndrfg8ejkmcpqxot1uwisza345h769";
const cleanInput = input.replace(/=/g, "");
let buffer = 0;
let bitsLeft = 0;
let output = "";
for (let i = 0; i < cleanInput.length; i++) {
buffer = (buffer << 5) | zBase32chars.indexOf(cleanInput.charAt(i));
bitsLeft += 5;
if (bitsLeft >= 8) {
output += String.fromCharCode((buffer >> (bitsLeft - 8)) & 255);
bitsLeft -= 8;
}
}
return output;
}
matches(input) {
const zbase32Regex = /^[ybndrfg8ejkmcpqxot1uwisza345h769]{10,}$/;
const result = zbase32Regex.exec(input);
return result ? result : null;
}
}