Introduction to the Wizard's Toolkit

The Wizard's Toolkit provides command-line utilities to convert plaintext to ciphertext, convert ciphertext to plaintext, report properties associated with ciphertext, compute the message digest of a file, and read message digests from a file and authenticate them. In addition, the Wizard's Toolkit includes a cross-platform C API that includes a number of encryption and hash methods many developers should find useful in their projects.

Wizard's Toolkit is free software delivered as a ready-to-run binary distribution or as source code that you may use, copy, modify, and distribute in both open and proprietary applications. It is distributed under a derived Apache 2.0 license.

The current release is Wizard's Toolkit 1.0.9-4. It runs on Linux, Windows, Mac Os X, iOS, Android OS, and others.

The authoritative Wizard's Toolkit web site is https://magick.imagemagick.org. The authoritative source code repository is https://github.com/ImageMagick/WizardsToolkit.

Features and Capabilities

Here are just a few examples of what the Wizard's Toolkit command line utilities can do:

    * Convert plaintext to ciphertext
    * Convert ciphertext to plaintext
    * Report properties associated with ciphertext.
    * Compute the message digest of a file.
    * Read message digests from a file and verify them.

Here are just a few examples of what the Wizard's Toolkit Application Programming Interface can do:

    * Return files as Binary Large OBjectS
    * Write/read characters, shorts, words, and long words to/from a file
    * Compute a cyclic redunancy checksum
    * Handle C exceptions
    * Generate a secure hash (includes MD5, SHA-1, SHA-224, SHA-256, SHA-384,
    * and SHA-512)
    * Generate a keyed-hash for message authentication
    * Encipher/decipher messages (includes AES, Serpent, and Twofish)
    * Authenticate a user (only secret-key supported at this time)
    * Map content with its associated mime type and file extension
    * Log events to the console or XML-style file
    * Anonymous memory-mapped memory allocation/deallocation
    * Increase entropy with message compression
    * Generate cryptographically-strong random numbers
    * Acquire/relinquish resources
    * Acquire/relinquish semaphores
    * Store/retrieve key-value pairs to/from a hashmap or linked-list
    * Store/retrieve key-value pairs to/from a self-adjusting binary tree
    * Parse or generate a XML document
    * Convenience methods for dealing with strings
