OneTime: An Encoder/Decoder For One-Time Pads

Download OneTime version ONETIMEVERSION

(Or, just download the standalone script, if you don't need the README and other files.)

Note: "OneTime" was formerly called "OTP". I changed the name to avoid collision with some existing software packages. The only change is that you should run 'onetime' where you used to run 'otp'; the program will automatically detect and migrate legacy data as needed.

OneTime is an open source encryption program that uses the one-time pad algorithm to allow two parties to communicate securely, without worrying about unauthorized people listening in. OneTime compresses plaintext input to save pad, has features that assist with the bureaucracy of pad management, and comes with built-in help. It is written in the Python programming language and requires a Python interpreter to run.

To use OneTime reliably, you need a source of good random data. On modern Unix systems, the /dev/random device is probably good enough (I haven't done the math myself, I'm just taking other people's word for it). On non-Unix systems, you're on your own. Whatever your source of random data, store the data in a file (that's the "pad") and point to it using OneTime's -p option when you encrypt; the recipient must use the same pad to decrypt, of course. Note that the one-time pad method depends completely on the quality of the pad data; if the pad is not truly random, the security of your messages cannot be guaranteed. Never encrypt different plaintexts with the same stretch of pad — doing so could reveal some or all of the used pad to eavesdroppers. OneTime's default behavior is to always avoid reusing pad data, unless you tell it otherwise.

OneTime was written by Karl Fogel and is in the public domain.

Here is the output of 'onetime --intro':