{"id":17540525,"url":"https://github.com/filip26/copper-multibase","last_synced_at":"2025-04-23T22:52:47.926Z","repository":{"id":41957849,"uuid":"245051162","full_name":"filip26/copper-multibase","owner":"filip26","description":"Multibase Encoder \u0026 Decoder","archived":false,"fork":false,"pushed_at":"2025-04-14T10:34:30.000Z","size":274,"stargazers_count":2,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-04-23T22:52:41.797Z","etag":null,"topics":["base16","base2","base32","base32hex","base58btc","base64","base64url","multibase","multiformat","multiformats"],"latest_commit_sha":null,"homepage":"https://apicatalog.com","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/filip26.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"github":["filip26"],"patreon":null,"open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"custom":["https://wise.com/share/filipk558","https://paypal.me/FilipKolarik"]}},"created_at":"2020-03-05T02:32:22.000Z","updated_at":"2025-04-14T10:34:26.000Z","dependencies_parsed_at":"2024-03-04T00:27:50.480Z","dependency_job_id":"7fc3a039-c2ab-40f2-a865-d07801b9ad19","html_url":"https://github.com/filip26/copper-multibase","commit_stats":{"total_commits":174,"total_committers":3,"mean_commits":58.0,"dds":"0.27586206896551724","last_synced_commit":"4b15588614e989376a3573916c8b072c22e1a8a4"},"previous_names":["filip26/copper-multibase","filip26/id32"],"tags_count":8,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/filip26%2Fcopper-multibase","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/filip26%2Fcopper-multibase/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/filip26%2Fcopper-multibase/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/filip26%2Fcopper-multibase/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/filip26","download_url":"https://codeload.github.com/filip26/copper-multibase/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250528697,"owners_count":21445511,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["base16","base2","base32","base32hex","base58btc","base64","base64url","multibase","multiformat","multiformats"],"created_at":"2024-10-20T22:24:07.935Z","updated_at":"2025-04-23T22:52:47.899Z","avatar_url":"https://github.com/filip26.png","language":"Java","funding_links":["https://github.com/sponsors/filip26","https://wise.com/share/filipk558","https://paypal.me/FilipKolarik"],"categories":[],"sub_categories":[],"readme":"# Copper Multibase Encoder and Decoder.\n\nA Java implementation of [Multibase](https://w3c-ccg.github.io/multibase/).\n\n[![Java 8 CI](https://github.com/filip26/copper-multibase/actions/workflows/java8-build.yml/badge.svg)](https://github.com/filip26/copper-multibase/actions/workflows/java8-build.yml)\n[![Maven Central](https://img.shields.io/maven-central/v/com.apicatalog/copper-multibase.svg?label=Maven%20Central)](https://search.maven.org/search?q=g:com.apicatalog%20AND%20a:copper-multibase)\n[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)\n\n## Features\n- `static` registry\n  - no lookups when encoding\n  - direct static access to an encoder\n  - configurable set of encodings to support when decoding\n- built-in bases\n  - Base2\n  - Base16 `(lower|upper)`\n  - Base32 `(lower|upper, [no-]padding)`\n  - Base32Hex `(lower|upper, [no-]padding)`\n  - Base58BTC\n  - Base64 `([no-]padding)`\n  - Base64URL `([no-]padding)`\n- no 3rd party dependencies\n- easily extendable\n\n## Examples\n```javascript\n/* encode an input with Base58BTC */\nString encoded = Multibase.BASE_58_BTC.encode(byte[]);\n\n/* get decoder instance initialized with all supported bases */\nvar decoder = MultibaseDecoder.getInstance();\n\n/* get decoder initialized with custom base(s) */\nvar decoder = MultibaseDecoder.getInstance(cbases...);\n\n/* decode */\nbyte[] decoded = decoder.decode(encoded);\n\n/* or check if base is supported  */\nMultibase base = decoder.getBase(encoded).orElseThrow(() -\u003e new IllegalArgumentException(\"Unsupported base.\"));\nbyte[] decoded = base.decode(encoded);\n\n/* or directy when only one base is supported */\nbyte[] decoded = Multibase.BASE_58_BTC.decode(encoded);\n\n/* check if encoded with a base */\nif (Multibase.BASE_58_BTC.isEncoded(encoded)) {\n  ...\n}\n\n/* a cutom base implementation */\nvar mybase = new Multibase(\n                     prefix,   // multibase prefix letter\n                     length,   // alphabet length\n                     string -\u003e byte[], // decode fnc.\n                     byte[] -\u003e string // encode fnc.\n                     );\n\n/* encode with a custom base */\nString encoded = mybase.encode(byte[]);\n\n/* directly decode with a custom base */\nbyte[] decoded = mybase.decode(encoded);\n\n/* get decoder initialized with a custom base */\nvar decoder = MultibaseDecorer.getInstance(mybase, ...);\n```\n\n## Installation\n\n### Maven\n\n```xml\n\u003cdependency\u003e\n    \u003cgroupId\u003ecom.apicatalog\u003c/groupId\u003e\n    \u003cartifactId\u003ecopper-multibase\u003c/artifactId\u003e\n    \u003cversion\u003e1.0.0\u003c/version\u003e\n\u003c/dependency\u003e\n```\n\n## Documentation\n\n[![javadoc](https://javadoc.io/badge2/com.apicatalog/copper-multibase/javadoc.svg)](https://javadoc.io/doc/com.apicatalog/copper-multibase)\n\n\n\n## Contributing\n\nAll PR's welcome!\n\n\n### Building\n\nFork and clone the project repository.\n\n```bash\n\u003e cd copper-multibase\n\u003e mvn clean package\n```\n\n\n## Resources\n- [Copper Multicodec](https://github.com/filip26/copper-multicodec)\n- [W3C CCG Multibase](https://github.com/w3c-ccg/multibase)\n- [Multiformats Multibase](https://github.com/multiformats/multibase)\n- [java-multibase](https://github.com/multiformats/java-multibase)\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffilip26%2Fcopper-multibase","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffilip26%2Fcopper-multibase","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffilip26%2Fcopper-multibase/lists"}