#base-16 #hex #constant-time-operation

no-std base16ct

Pure Rust implementation of Base16 a.k.a hexadecimal (RFC 4648) which avoids any usages of data-dependent branches/LUTs and thereby provides portable "best effort" constant-time operation and embedded-friendly no_std support

4 releases (2 breaking)

Uses new Rust 2024

0.3.0 Aug 20, 2025
0.2.0 Feb 26, 2023
0.1.1 Jan 15, 2022
0.1.0 Jan 13, 2022
0.0.0 Jan 11, 2022

#2574 in Cryptography

Download history 1303765/week @ 2025-08-27 1398268/week @ 2025-09-03 1274620/week @ 2025-09-10 1210439/week @ 2025-09-17 1312270/week @ 2025-09-24 1353146/week @ 2025-10-01 1349095/week @ 2025-10-08 1354243/week @ 2025-10-15 1430213/week @ 2025-10-22 1496422/week @ 2025-10-29 1559297/week @ 2025-11-05 1488667/week @ 2025-11-12 1652435/week @ 2025-11-19 1318002/week @ 2025-11-26 1584757/week @ 2025-12-03 1289664/week @ 2025-12-10

6,115,869 downloads per month
Used in 5,974 crates (99 directly)

Apache-2.0 OR MIT

17KB
221 lines

RustCrypto: Constant-Time Base16 (hexadecimal)

crate Docs Build Status Apache2/MIT licensed Rust Version Project Chat

Pure Rust implementation of Base16 (RFC 4648).

Implements lower and upper case Base16 variants without data-dependent branches or lookup tables, thereby providing portable "best effort" constant-time operation.

Supports no_std environments and avoids heap allocations in the core API (but also provides optional alloc support for convenience).

Documentation

Minimum Supported Rust Version (MSRV) Policy

MSRV increases are not considered breaking changes and can happen in patch releases.

The crate MSRV accounts for all supported targets and crate feature combinations, excluding explicitly unstable features.

License

Licensed under either of:

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

No runtime deps

Features