4 releases (2 breaking)
0.4.0 | Feb 10, 2025 |
---|---|
0.3.0 | Feb 6, 2025 |
0.2.1 | Feb 4, 2025 |
0.2.0 | Feb 4, 2025 |
#257 in Magic Beans
343 downloads per month
34KB
328 lines
c32
Rust implementation of Crockford's Base32 encoding scheme.
[dependencies]
c32 = "0.4.0"
Implementation
- Lightweight — The core functionality has zero external dependencies.
- Portable — Fully compatible with
#![no_std]
environments. - Safe — Implemented entirely in safe Rust with no
unsafe
blocks.
Examples
std
or alloc
// encoding...
let bytes = b"usque ad finem";
let encoded = c32::encode(&bytes);
assert_eq!(encoded, "1TQ6WBNCMG62S10CSMPWSBD");
// decoding...
let bytes = b"usque ad finem";
let decoded = c32::decode("1TQ6WBNCMG62S10CSMPWSBD")?;
assert_eq!(decoded, bytes);
#![no_std]
// encoding...
let bytes = b"usque ad finem";
let mut buffer = [0; 32];
let written = c32::encode_into(bytes, &mut buffer)?;
let encoded = &buffer[..written];
assert_eq!(encoded, b"1TQ6WBNCMG62S10CSMPWSBD");
// decoding...
let encoded = b"1TQ6WBNCMG62S10CSMPWSBD";
let mut buffer = [0; 32];
let written = c32::decode_into(encoded, &mut buffer)?;
let decoded = &buffer[..written];
assert_eq!(decoded, b"usque ad finem");
Checksum
The check
feature provides methods for encoding data with SHA256-based checksum verification.
std
or alloc
// encoding...
let bytes = b"usque ad finem";
let encoded = c32::encode_check(bytes, 22)?;
assert_eq!(encoded, "P7AWVHENJJ0RB441K6JVK5DNJ7J3V5");
// decoding...
let encoded = "P7AWVHENJJ0RB441K6JVK5DNJ7J3V5";
let (version, decoded) = c32::decode_check(encoded)?;
assert_eq!(decoded, b"usque ad finem");
assert_eq!(version, 22);
#![no_std]
// encoding...
let bytes = b"usque ad finem";
let mut buffer = [0; 32];
let written = c32::encode_check_into(bytes, 22, &mut buffer)?;
let encoded = &buffer[..written];
assert_eq!(encoded, b"P7AWVHENJJ0RB441K6JVK5DNJ7J3V5");
// decoding...
let encoded = b"P7AWVHENJJ0RB441K6JVK5DNJ7J3V5";
let mut buffer = [0; 32];
let (version, written) = c32::decode_check_into(encoded, &mut buffer)?;
let decoded = &buffer[..written];
assert_eq!(decoded, b"usque ad finem");
assert_eq!(version, 22);
For more details, please refer to the full API Reference.
Security
For security-related concerns, please review the Security Policy.License
Licensed under Apache License, Version 2.0 or MIT License at your discretion.Contribution
Contributions to this crate will be dual-licensed under Apache-2.0 and MIT by default, unless specifically indicated otherwise.Dependencies
~120KB