PackageTrack
Sign in Get early access

hashlib_codecs

Renamed to convertlib. This package now re-exports convertlib for backward compatibility and is deprecated. Please migrate to the convertlib package.

3.5.0 29K downloads/mo #1880 most downloaded on pub.dev bitanon/convertlib

What this package is like to depend on

Last release 1 months ago

08 Jul 2026

Release timing varies

gaps range from 4 weeks to 10 months

Nearly every release is documented

notes for 23 of 23 stable releases

Nothing withdrawn

no release was ever pulled

3 years old

23 releases · first in 2023

8 releases in the last 12 months

see the full history below

Release timeline

23 releases · May 2023 to Jul 2026
2024 2025 2026
Release Pre-release

Releases

latest 23
  1. 3.5.0 08 Jul 2026
    Release notes
    • [Breaking Changes]
      • Renames internal abstract class HashlibConverter to CipherlibConverter.
      • Removes encodeString, decodeString from IterableCodec.
    • Fix CryptDataBuilder.param to throw an ArgumentError when the value is
      null, instead of a raw TypeError.
    • Speed up Base-64 and Base-32 encoding with specialized single-pass encoders.
      Base-64 encoding now outperforms dart:convert.
    • Speed up Base-64 and Base-32 decoding with specialized single-pass decoders.
      Base-64 decoding now outperforms dart:convert.
    • Speed up toUtf8 using Uint8List buffer instead of plain List<int>.
      UTF-8 encoding now outperforms dart:convert.
    • Speed up fromUtf8 with a dedicated byte-to-string decoder.
      UTF-8 decoding now matches closely with dart:convert.
    • Refactor existing benchmarks and add missing ones. Dropping benchmark_harness
      dependency in favor of custom benchmarking class with better flexibility.

    Full Changelog: v3.4.0...v3.5.0

    Open source →
    Release notes
    • [Breaking Changes]
      • Removes encodeString, decodeString from IterableCodec.
    • Renames internal abstract class HashlibConverter to CipherlibConverter.
    • Fix CryptDataBuilder.param to throw an ArgumentError when the value is null, instead of a raw TypeError.
    • Speed up Base-64 and Base-32 encoding with specialized single-pass encoders. Base-64 encoding now outperforms dart:convert.
    • Speed up Base-64 and Base-32 decoding with specialized single-pass decoders. Base-64 decoding now outperforms dart:convert.
    • Speed up toUtf8 using Uint8List buffer instead of plain List<int>. UTF-8 encoding now outperforms dart:convert.
    • Speed up fromUtf8 with a dedicated byte-to-string decoder. UTF-8 decoding now matches closely with dart:convert.
    • Refactor existing benchmarks and add missing ones. Dropping benchmark_harness dependency in favor of custom benchmarking class with better flexibility.
    Open source →
  2. 3.4.0 07 Jul 2026
    Release notes
    • Rename the package from hashlib_codecs to convertlib. The public API is
      unchanged: update the dependency to convertlib and imports to
      package:convertlib/convertlib.dart.
    • The hashlib_codecs package continues to be published as a thin re-export of
      convertlib for backward compatibility, and will be discontinued after a
      migration period.

    Full Changelog: v3.3.1...v3.4.0

    Open source →
    Release notes
    • Rename the package from hashlib_codecs to convertlib. The public API is unchanged: update the dependency to convertlib and imports to package:convertlib/convertlib.dart.
    • The hashlib_codecs package continues to be published as a thin re-export of convertlib for backward compatibility, and will be discontinued after a migration period.
    Open source →
  3. 3.3.1 07 Jul 2026
    Release notes
    • Fix CryptData.validate rejecting valid Modular Crypt Format hashes such as
      bcrypt, whose base64 alphabet uses .. The hash field now accepts the
      same characters as the salt ([a-zA-Z0-9/+.-]), reverting the overly
      strict B64 restriction introduced in 3.3.0.
    • Document every public API element (100% dartdoc coverage) and correct several
      inaccurate doc comments, including the Base8Codec alphabet (01234567) and
      the octal/binary notes on toOctal.

    Full Changelog: v3.3.0...v3.3.1

    Open source →
    Release notes
    • Fix CryptData.validate rejecting valid Modular Crypt Format hashes such as bcrypt, whose base64 alphabet uses .. The hash field now accepts the same characters as the salt ([a-zA-Z0-9/+.-]), reverting the overly strict B64 restriction introduced in 3.3.0.
    • Document every public API element (100% dartdoc coverage) and correct several inaccurate doc comments, including the Base8Codec alphabet (01234567) and the octal/binary notes on toOctal.
    Open source →
  4. 3.3.0 06 Jul 2026
    Release notes
    • [Breaking Changes]
      • ByteCollector.isEqual requires an Iterable argument to match the full
        length; previously a strict prefix of the bytes compared equal.
      • CryptData.validate now follows the PHC string format specification
        strictly: the hash must be a B64 string ([a-zA-Z0-9/+], no . or -),
        and the version must not have leading zeros.
      • Reject invalid values after padding in AlphabetDecoder. Affected codecs are Base32 and Base64.
    • ByteCollector.isEqual now compares content in constant time, making it safe
      for comparing MACs and message digests
    • Performance improvements (measured on Apple Silicon, 10KB inputs):
      • Base-32 decoding: ~6x faster (425 Mbps -> 2.52 Gbps)
      • Base-64 decoding: ~6.4x faster (453 Mbps -> 2.9 Gbps)
      • UTF-8 encoding: ~6.5x faster (403 Mbps -> 2.61 Gbps)
    • Update the PHC string format specification link to its new home at C2SP

    Full Changelog: v3.2.0...v3.3.0

    Open source →
    Release notes
    • [Breaking Changes]
      • ByteCollector.isEqual requires an Iterable argument to match the full length; previously a strict prefix of the bytes compared equal.
      • CryptData.validate now follows the PHC string format specification strictly: the hash must be a B64 string ([a-zA-Z0-9/+], no . or -), and the version must not have leading zeros.
      • Reject invalid values after padding in AlphabetDecoder. Affected codecs are Base32 and Base64.
    • ByteCollector.isEqual now compares content in constant time, making it safe for comparing MACs and message digests
    • Performance improvements (measured on Apple Silicon, 10KB inputs):
      • Base-32 decoding: ~6x faster (425 Mbps -> 2.52 Gbps)
      • Base-64 decoding: ~6.4x faster (453 Mbps -> 2.9 Gbps)
      • UTF-8 encoding: ~6.5x faster (403 Mbps -> 2.61 Gbps)
    • Update the PHC string format specification link to its new home at C2SP
    Open source →
  5. 3.2.0 06 Jul 2026
    Release notes
    • [Breaking Changes]
      • Fix Base32Codec.wordSafe to use the documented word-safe alphabet
        (23456789CFGHJMPQRVWXcfghjmpqrvwx); it previously used the z-base-32 alphabet.
      • ByteCollector equality is now value-based: == and hashCode compare the
        collected bytes instead of the identity of the underlying list.
    • Fix UTF-8 decoder producing wrong code points for some 2-byte sequences (e.g. U+0100)
    • Fix ByteCollector.isEqual comparing against its own buffer when given a ByteBuffer
    • Fix ByteCollector.isEqual ignoring the offset and length of a partial TypedData view
    • Fix incorrect alphabets of crockford and geohash in the README
    • Fix incorrect parameter descriptions of toBase32, fromBase32, fromBase64, and fromUtf8
    • Document that toUtf8 rejects unpaired surrogates

    Full Changelog: v3.1.2...v3.2.0

    Open source →
    Release notes
    • [Breaking Changes]
      • Fix Base32Codec.wordSafe to use the documented word-safe alphabet (23456789CFGHJMPQRVWXcfghjmpqrvwx); it previously used the z-base-32 alphabet.
      • ByteCollector equality is now value-based: == and hashCode compare the collected bytes instead of the identity of the underlying list.
    • Fix UTF-8 decoder producing wrong code points for some 2-byte sequences (e.g. U+0100)
    • Fix ByteCollector.isEqual comparing against its own buffer when given a ByteBuffer
    • Fix ByteCollector.isEqual ignoring the offset and length of a partial TypedData view
    • Fix incorrect alphabets of crockford and geohash in the README
    • Fix incorrect parameter descriptions of toBase32, fromBase32, fromBase64, and fromUtf8
    • Document that toUtf8 rejects unpaired surrogates
    Open source →
  6. 3.1.2 19 Apr 2026
    Release notes
    • Add const constructor to ByteCollector class.

    Full Changelog: v3.1.1...v3.1.2

    Open source →
    Release notes
    • Add const constructor to ByteCollector class.
    Open source →
  7. 3.1.1 18 Apr 2026
    Release notes
    • Add const constructor to ByteCollector class.

    Full Changelog: v3.1.0...v3.1.1

    Open source →
  8. 3.1.0 18 Apr 2026
    Release notes
    • Introduce ByteCollector abstract class with methods for various encoding formats (hex, binary, octal, base32, base64, BigInt). and utility methods for equality check.
    Open source →
  9. 3.0.1 14 Jun 2025
    Release notes
    • Test release with workflow
    Open source →
  10. 3.0.0 10 Jun 2025
    Release notes
    • Set minimum Dart SDK to 2.19.0
    Open source →
  11. 2.6.0 19 Aug 2024
    Release notes
    • [Breaking Changes]
      • Change the behavior of the Base-8 encoder to follow the standard
      • Accept only List<int> instead of Iterable<int> in converters
    Open source →
  12. 2.5.0 30 Jun 2024
    Release notes
    • Support UTF-8 encoding and decoding.
      • New class: UTF8Codec
      • New methods: toUtf8, fromUtf8
    • Renames:
      • HashlibCodec -> IterableCodec
    • Minor performance impovements
    Open source →
  13. 2.4.1 30 Jun 2024
    Release notes
    • Refactor: Remove all sync generator to improve runtime.
    Open source →
  14. 2.4.0 24 May 2024
    Release notes
    • Breaking Changes: Uses string for salt and hash in CryptData
    • New class CryptDataBuilder is available to construct CryptData instances.
    Open source →
  15. 2.3.0 23 May 2024
    Release notes
    • Breaking Changes: Renames PHCSF -> CryptFormat. Affected names:
      • Class:
        • PHCSF -> CryptFormat
        • PHCSFData -> CryptData
        • PHCSFEncoder -> CryptEncoder
        • PHCSFDecoder -> CryptDecoder
      • Constant:
        • phcsf -> crypt
      • Methods:
        • toPHCSF -> toCrypt
        • fromPHCSF -> fromCrypt
    Open source →
  16. 2.2.0 02 Sep 2023
    Release notes
    Open source →
  17. 2.1.1 29 Aug 2023
    Release notes
    • Adds new alphabet to Base64Codec: bcrypt
    Open source →
  18. 2.1.0 22 Jun 2023
    Release notes
    Open source →
  19. 2.0.0 18 Jun 2023
    Release notes
    • Breaking: Removes all constant exports.
      • They are now available inside codec class. e.g.: Base64Codec.urlSafe
    • Breaking: Modify parameters of all public methods.
    • Improves encoding and decoding algorithm.
    • Adds Base-8 (Octal) codec support
      • New class: Base8Codec
      • New methods: fromOctal, toOctal
    • Renames a lot of exports
      • Uint8Converter -> BitConverter
      • Uint8Codec -> HashlibCodec
      • BinaryCodec -> Base2Codec
      • B16Codec -> Base16Codec
      • B64Codec -> Base64Codec
    • Separates base encoder and decoders
      • Generic encoders: BitEncoder, AlphabetEncoder
      • Generic decoders: BitDecoder, AlphabetDecoder
    Open source →
  20. 1.2.0 22 May 2023
    Release notes
    • Adds BigInt codec support.
      • New class: BigIntCodec
      • New methods: fromBigInt, toBigInt
      • New constant: bigintLE, bigintBE
    • Updates documentations.
    Open source →
  21. 1.1.1 21 May 2023
    Release notes
    • Updates project description.
    Open source →
  22. 1.1.0 21 May 2023
    Release notes
    • Fixes padding issues with base2 and base16
    • In toBase32, uses the parameter lower replacing upper.
    • Transfers fromBase64Url to fromBase64 with extended alphabet.
    • Transfers toBase64Url to toBase64 with optional url parameter.
    • Improves documentation
    Open source →
  23. 1.0.0 20 May 2023
    Release notes
    • First release
    Open source →

Every package, every release, already written down.

The archive is open and free. Watching your own project is what we are building next.

Browse the archive