From 684b6d78ea5b19aeec8c1916256c9f2c55b1996f Mon Sep 17 00:00:00 2001 From: Infendro Date: Sun, 18 Jan 2026 22:15:25 +0100 Subject: [PATCH] implement Base56 and Base58 --- .../com/infendro/encoding/numeric/Base56.kt | 5 +++ .../com/infendro/encoding/numeric/Base58.kt | 5 +++ .../com/infendro/encoding/numeric/Base56.kt | 37 +++++++++++++++++++ .../com/infendro/encoding/numeric/Base58.kt | 37 +++++++++++++++++++ 4 files changed, 84 insertions(+) create mode 100644 src/commonMain/kotlin/com/infendro/encoding/numeric/Base56.kt create mode 100644 src/commonMain/kotlin/com/infendro/encoding/numeric/Base58.kt create mode 100644 src/commonTest/kotlin/com/infendro/encoding/numeric/Base56.kt create mode 100644 src/commonTest/kotlin/com/infendro/encoding/numeric/Base58.kt diff --git a/src/commonMain/kotlin/com/infendro/encoding/numeric/Base56.kt b/src/commonMain/kotlin/com/infendro/encoding/numeric/Base56.kt new file mode 100644 index 0000000..141d002 --- /dev/null +++ b/src/commonMain/kotlin/com/infendro/encoding/numeric/Base56.kt @@ -0,0 +1,5 @@ +package com.infendro.encoding.numeric + +private val alphabet = "23456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnpqrstuvwxyz".encodeToByteArray() + +object Base56 : NumericEncoding(alphabet) diff --git a/src/commonMain/kotlin/com/infendro/encoding/numeric/Base58.kt b/src/commonMain/kotlin/com/infendro/encoding/numeric/Base58.kt new file mode 100644 index 0000000..471a293 --- /dev/null +++ b/src/commonMain/kotlin/com/infendro/encoding/numeric/Base58.kt @@ -0,0 +1,5 @@ +package com.infendro.encoding.numeric + +private val alphabet = "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz".encodeToByteArray() + +object Base58 : NumericEncoding(alphabet) diff --git a/src/commonTest/kotlin/com/infendro/encoding/numeric/Base56.kt b/src/commonTest/kotlin/com/infendro/encoding/numeric/Base56.kt new file mode 100644 index 0000000..8f460a7 --- /dev/null +++ b/src/commonTest/kotlin/com/infendro/encoding/numeric/Base56.kt @@ -0,0 +1,37 @@ +package com.infendro.encoding.numeric + +import com.infendro.encoding.Encoding +import kotlin.test.Test +import kotlin.test.assertContentEquals + +class `Base56 Test` { + val encoding: Encoding + get() = Base56 + + val original = "Hello World!".encodeToByteArray() + val encoded = "4q9snPvV4iRDWVKjK".encodeToByteArray() + + @Test + fun `encode empty`() { + val actual = encoding.encode(byteArrayOf()) + assertContentEquals(byteArrayOf(), actual) + } + + @Test + fun `decode empty`() { + val actual = encoding.decode(byteArrayOf()) + assertContentEquals(byteArrayOf(), actual) + } + + @Test + fun encode() { + val actual = encoding.encode(original).also { println(it.decodeToString()) } + assertContentEquals(encoded, actual) + } + + @Test + fun decode() { + val actual = encoding.decode(encoded) + assertContentEquals(original, actual) + } +} diff --git a/src/commonTest/kotlin/com/infendro/encoding/numeric/Base58.kt b/src/commonTest/kotlin/com/infendro/encoding/numeric/Base58.kt new file mode 100644 index 0000000..5da5d2a --- /dev/null +++ b/src/commonTest/kotlin/com/infendro/encoding/numeric/Base58.kt @@ -0,0 +1,37 @@ +package com.infendro.encoding.numeric + +import com.infendro.encoding.Encoding +import kotlin.test.Test +import kotlin.test.assertContentEquals + +class `Base58 Test` { + val encoding: Encoding + get() = Base58 + + val original = "Hello World!".encodeToByteArray() + val encoded = "2NEpo7TZRRrLZSi2U".encodeToByteArray() + + @Test + fun `encode empty`() { + val actual = encoding.encode(byteArrayOf()) + assertContentEquals(byteArrayOf(), actual) + } + + @Test + fun `decode empty`() { + val actual = encoding.decode(byteArrayOf()) + assertContentEquals(byteArrayOf(), actual) + } + + @Test + fun encode() { + val actual = encoding.encode(original) + assertContentEquals(encoded, actual) + } + + @Test + fun decode() { + val actual = encoding.decode(encoded) + assertContentEquals(original, actual) + } +}