implement Base56 and Base58

This commit is contained in:
2026-01-18 22:15:25 +01:00
parent 24c667bc9c
commit 684b6d78ea
4 changed files with 84 additions and 0 deletions

View File

@@ -0,0 +1,5 @@
package com.infendro.encoding.numeric
private val alphabet = "23456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnpqrstuvwxyz".encodeToByteArray()
object Base56 : NumericEncoding(alphabet)

View File

@@ -0,0 +1,5 @@
package com.infendro.encoding.numeric
private val alphabet = "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz".encodeToByteArray()
object Base58 : NumericEncoding(alphabet)

View File

@@ -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)
}
}

View File

@@ -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)
}
}