Przejdź do głównej zawartości

Implementacje base64url

ASP.NET Core

W ASP.NET Core najwygodniej użyć WebEncoders.

using System.Text;
using Microsoft.AspNetCore.WebUtilities;

var plain = "FV/2026/03/001";

var encoded = WebEncoders.Base64UrlEncode(Encoding.UTF8.GetBytes(plain));
var decoded = Encoding.UTF8.GetString(WebEncoders.Base64UrlDecode(encoded));

Console.WriteLine(encoded); // RlYvMjAyNi8wMy8wMDE
Console.WriteLine(decoded); // FV/2026/03/001

Elixir

Elixir posiada wbudowaną obsługę base64url w bibliotece standardowej.

plain = "FV/2026/03/001"

encoded = Base.url_encode64(plain, padding: false)
Base.url_decode64(encoded, padding: false)
{:ok, "FV/2026/03/001"}

Go

Go ma wbudowaną obsługę base64url w bibliotece standardowej.

package main

import (
"encoding/base64"
"fmt"
)

func main() {
plain := "FV/2026/03/001"

encoded := base64.RawURLEncoding.EncodeToString([]byte(plain))

decodedBytes, err := base64.RawURLEncoding.DecodeString(encoded)
if err != nil {
panic(err)
}

decoded := string(decodedBytes)

fmt.Println(encoded) // RlYvMjAyNi8wMy8wMDE
fmt.Println(decoded) // FV/2026/03/001
}

Java

Java ma wbudowaną obsługę base64url w bibliotece standardowej.

import java.nio.charset.StandardCharsets;
import java.util.Base64;

public class Base64UrlExample {

public static String encode(String value) {
return Base64.getUrlEncoder()
.withoutPadding()
.encodeToString(value.getBytes(StandardCharsets.UTF_8));
}

public static String decode(String value) {
byte[] decoded = Base64.getUrlDecoder().decode(value);
return new String(decoded, StandardCharsets.UTF_8);
}

public static void main(String[] args) {
String plain = "FV/2026/03/001";

String encoded = encode(plain);
String decoded = decode(encoded);

System.out.println(encoded); // RlYvMjAyNi8wMy8wMDE
System.out.println(decoded); // FV/2026/03/001
}
}

JavaScript (przeglądarka)

Można zastosować pakiet universal-base64url.

import { decode, encode } from "universal-base64url";

encode("test"); //=> "dGVzdA"
decode("dGVzdA"); //=> "test"

Node.js

Node.js ma wbudowaną obsługę base64url przez Buffer.

const plain = "FV/2026/03/001";

const encoded = Buffer.from(plain, "utf8").toString("base64url");
const decoded = Buffer.from(encoded, "base64url").toString("utf8");

console.log(encoded); // RlYvMjAyNi8wMy8wMDE
console.log(decoded); // FV/2026/03/001

PHP

W PHP można użyć biblioteki base64url.

Python

Python ma wbudowaną obsługę base64url w bibliotece standardowej ale wymaga ona usunięcia padding.

import base64

def encode_base64url(value: str) -> str:
encoded = base64.urlsafe_b64encode(value.encode("utf-8"))
return encoded.rstrip(b"=").decode("ascii")

def decode_base64url(value: str) -> str:
padding = "=" * (-len(value) % 4)
decoded = base64.urlsafe_b64decode((value + padding).encode("ascii"))
return decoded.decode("utf-8")


plain = "FV/2026/03/001"

encoded = encode_base64url(plain)
decoded = decode_base64url(encoded)

print(encoded) # RlYvMjAyNi8wMy8wMDE
print(decoded) # FV/2026/03/001

Ruby

Ruby ma wbudowaną obsługę base64url w bibliotece standardowej.

require 'base64'

plain = 'FV/2026/03/001'

encoded = Base64.urlsafe_encode64(plain, padding: false)
decoded = Base64.urlsafe_decode64(encoded)

puts encoded # RlYvMjAyNi8wMy8wMDE
puts decoded # FV/2026/03/001