dart-base32
Simple base32 encode/decode following RFC4648. Can handle base32 for OTP secrets also.
Features:
- Encodes and Decodes Base32 strings.
- Documentation
Getting Started
Pubspec
pub.dev: (you can use 'any' instead of a version if you just want the latest always)
dependencies:
base32: 2.1.3
import 'package:base32/base32.dart';
Start encoding/decoding ...
// Encode a hex string to base32
base32.encodeHexString('48656c6c6f21deadbeef'); // -> 'JBSWY3DPEHPK3PXP'
// base32 decoding to original string.
base32.decodeAsHexString("JBSWY3DPEHPK3PXP"); // -> '48656c6c6f21deadbeef'
API
base32.encode(List<int> byteList, {Encoding encoding = Encoding.standardRFC4648})
Generate and return a RFC4648 base32 string from a list of bytes.
byteList
- (List<int>
) A list of bytes representing your input.
Returns String
representation of the encoded base32.
base32.encodeHexString(String hex, {Encoding encoding = Encoding.standardRFC4648})
Generate and return a RFC4648 base32 string from a hex string.
hexString
- (String
) A string of hex values intended to be converted to bytes and encoded.
Returns String
representation of the encoded base32
Example: Encode a hex string.
base32.encodeHexString('48656c6c6f21deadbeef'); // -> 'JBSWY3DPEHPK3PXP'
base32.encodeString(String base32str, {Encoding encoding = Encoding.standardRFC4648})
Generate and return a RFC4648 base32 string from a plain string.
base32str
- (String
) A string intended to be converted to bytes and encoded.
Returns String
representation of the encoded base32
Example: Encode a hex string.
base32.encodeString('foobar'); // -> 'MZXW6YTBOI======'
base32.decode(String base32, {Encoding encoding = Encoding.standardRFC4648})
Decodes a base32 string back to its original byte values.
base32
- (String
) The base32 string you wish to decode.
Returns Uint8List
of the decoded data.
Example: Decode a base32 string, then output it in hex format
import "package:convert/convert.dart"
var decoded = base32.decode("JBSWY3DPEHPK3PXP");
var decodedHex = hex.encode(decoded); // -> '48656c6c6f21deadbeef'
base32.decodeAsHexString(String base32, {Encoding encoding = Encoding.standardRFC4648})
Decodes a base32 string back to its original byte values in hex string format.
base32
- (String
) The base32 string you wish to decode.
Returns String
of the decoded data.
Example: Decode a base32 string to a hex string.
import "package:convert/convert.dart"
var decoded = base32.decodeAsHexString("JBSWY3DPEHPK3PXP"); // -> '48656c6c6f21deadbeef'
base32.decodeAsString(String base32, {Encoding encoding = Encoding.standardRFC4648})
Decodes a base32 string back to its original byte values.
base32
- (String
) The base32 string you wish to decode.
Returns String
of the decoded data.
Example: Decode a base32 string to a string.
var decoded = base32.decodeAsString("MZXW6YTBOI======"); // -> 'foobar'
enum Encoding
This is a list of supported variants and their different encodings.
- StandardRFC4648 - the default standard encoding
ABCDEFGHIJKLMNOPQRSTUVWXYZ234567
- Padded with
=
- base32Hex
0123456789ABCDEFGHIJKLMNOPQRSTUV
- Padded with
=
- crockford
0123456789ABCDEFGHJKMNPQRSTVWXYZ
- Not Padded
- z-base-32
ybndrfg8ejkmcpqxot1uwisza345h769
- Not Padded
- geohash
0123456789bcdefghjkmnpqrstuvwxyz
- Padded with
=
- NonStandardRFC4648 - Same as StandardRFC4648, but lowercase, not supported by the spec.
abcdefghijklmnopqrstuvwxyz234567
- Padded with
=
Testing
dart test/base32_test.dart
Changelog
See CHANGELOG.md