Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time

Build Status

A Python implementation of saltpack, mainly for testing and experimentation. You can play with commands like:

saltpack encrypt -m "foo" | saltpack decrypt --debug

Install with pip or pip3, depending on what your system calls Python 3's version of pip:

pip install saltpack

A brief summary of the commands:

  • encrypt and decrypt deal with encrypted messages. Use the --binary flag to skip the ASCII armoring. The default private key is 32 zero bytes, and the default recipients list is just the sender. They will read from stdin unless you provide the --message flag.
  • sign and verify deal with signed messages. The default private key is randomly generated. These also understand --binary and --message. The --detached flag (for signing) and the --signature <file> flag (for verifying) invoke the detached signing mode.
  • armor and dearmor commands read input from stdin and either encode it or decode it with saltpack's base 62 ASCII armor. The --raw flag skips the "BEGIN..." header and "END..." footer. Note that the header produced by this command doesn't describe the message type (i.e. "BEGIN SALTPACK ENCRYPTED MESSAGE"), so prefer encrypt and sign's built-in armoring.
  • block and unblock are low level command for playing with the BaseX encoding scheme that underlies our base 62 ASCII armor.
  • efficient prints out a list of efficient BaseX block sizes for a given alphabet size.


A Python implementation of saltpack, mainly for testing. Only partial support for V2.






No packages published