diff --git a/README.md b/README.md index 54b36b7d..22bc6a26 100644 --- a/README.md +++ b/README.md @@ -6,14 +6,9 @@ Github._ `jrnl` is a simple journal application for the command line. -Its goal is to facilitate the rapid creation and viewing of journal entries. It -is flexible enough to support different use cases and organization strategies. -It is powerful enough to search through thousands of entries and display, or -"filter," only the entries you want to see. - -`jrnl` includes support for [128-bit AES -encryption](http://en.wikipedia.org/wiki/Advanced_Encryption_Standard) using -[cryptography.Fernet](https://cryptography.io/en/latest/fernet/). +You can use it to easily create, search, and view journal entries. Journals are +stored as human-readable plain text, and can also be encrypted using [AES +encryption](http://en.wikipedia.org/wiki/Advanced_Encryption_Standard). ## In a Nutshell @@ -31,9 +26,8 @@ the rest as the body. In your journal file, the result will look like this: [2012-03-29 09:00] Called in sick. Used the time to clean the house and write my book. -Entering `jrnl` without any arguments launches an external editor where you can -write your entry. `jrnl` will generate a time stamp for the entry after you save -and close the editor window. +If you just call `jrnl`, you will be prompted to compose your entry - but you +can also configure _jrnl_ to use your external editor. For more information, please read the [documentation](https://jrnl.sh/overview/). @@ -61,7 +55,7 @@ src="https://opencollective.com/jrnl/contributors.svg?width=890&button=false" If you'd also like to help make `jrnl` better, please see our [contributing documentation](CONTRIBUTING.md). -## Financial Backers +### Financial Backers Another way show support is through direct financial contributions. These funds go to covering our costs, and are a quick way to show your appreciation for diff --git a/docs/encryption.md b/docs/encryption.md index a4f0a35a..c4bbc0e2 100644 --- a/docs/encryption.md +++ b/docs/encryption.md @@ -7,23 +7,6 @@ real world. There are a number of ways that people can at least partially compromise your `jrnl` data. See the [Privacy and Security](./security.md) page for more information. -## Dependencies - -As of version 2.0, `jrnl`'s encryption functions require -[`cryptography`](https://pypi.org/project/cryptography/), which is available in -the Python Package Index (PyPI) and can be installed using `pip`: - -``` sh -pip3 install cryptography -``` - -Previous versions of `jrnl` require -[`pycrypto`](https://pypi.org/project/pycrypto/): - -```sh -pip3 install pycrypto -``` - ## Encrypting and Decrypting Existing plain text journal files can be encrypted using the `--encrypt` @@ -52,7 +35,7 @@ encrypted file untouched and create a new plain text file next to it. ## Storing Passwords in Your Keychain -There is no method to recover or reset your `jrnl` password. If you lose it, +You can't recover or reset your `jrnl` password. If you lose it, your data will be inaccessible forever. For this reason, when encrypting a journal, `jrnl` asks whether you would like @@ -66,7 +49,8 @@ same password again. This will trigger the keychain storage prompt. ## Manual Decryption -Should you ever want to decrypt your journal manually, you can do so with any +The easiest way to decrypt your journal is with `jrnl --decrypt`, but +if you would like to decrypt your journal manually, you can do so with any program that supports the AES algorithm in CBC. The key used for encryption is the SHA-256 hash of your password. The IV (initialization vector) is stored in the first 16 bytes of the encrypted file. The plain text is encoded in UTF-8 and @@ -106,6 +90,12 @@ key = base64.urlsafe_b64encode(kdf.derive(password)) print(Fernet(key).decrypt(ciphertext).decode('utf-8')) ``` +To run the above script, you'll need [`cryptography`](https://pypi.org/project/cryptography/), which you can install with `pip`: + +``` sh +pip3 install cryptography +``` + If you're still using `jrnl` version 1.X, the following script serves the same purpose: @@ -134,3 +124,10 @@ plain = plain.strip(plain[-1:]) plain = plain.decode("utf-8") print(plain) ``` + +This script requires +[`pycrypto`](https://pypi.org/project/pycrypto/): + +```sh +pip3 install pycrypto +``` diff --git a/docs/overview.md b/docs/overview.md index 6f977ce7..1927bfe6 100644 --- a/docs/overview.md +++ b/docs/overview.md @@ -2,16 +2,15 @@ `jrnl` is a simple journal application for the command line. -`jrnl`'s goal is to facilitate the rapid creation and viewing of journal -entries. It is flexible enough to support different use cases and organization -strategies. It is powerful enough to search through thousands of entries and -display, or "filter," only the entries you want to see. +You can use it to easily create, search, and view journal entries. Journals are +stored as human-readable plain text, and can also be encrypted using [AES +encryption](http://en.wikipedia.org/wiki/Advanced_Encryption_Standard). `jrnl` has most of the features you need, and few of the ones you don't. ## Plain Text -`jrnl` stores each journal in plain text. `jrnl` files can be stored anywhere, +`jrnl` stores each journal in plain text. You can store `jrnl` files anywhere, including in shared folders to keep them synchronized between devices. Journal files are compact (thousands of entries take up less than 1 MiB) and can be read by almost any electronic device, now and for the foreseeable future. @@ -38,11 +37,9 @@ to the external editor of your choice. ## Encryption -`jrnl` includes support for [128-bit AES -encryption](http://en.wikipedia.org/wiki/Advanced_Encryption_Standard) using -[cryptography.Fernet](https://cryptography.io/en/latest/fernet/). The -[encryption page](./encryption.md) explains `jrnl`'s cryptographic framework in -more detail. +`jrnl` includes support for [AES +encryption](http://en.wikipedia.org/wiki/Advanced_Encryption_Standard). See the +[encryption page](./encryption.md) for more information. ## Import and Export @@ -51,8 +48,8 @@ be [exported](./export.md) in a variety of formats. ## Multi-Platform Support -`jrnl` is compatible with most operating systems. Pre-compiled binaries are -available through several distribution channels, and you can build from source. +`jrnl` is compatible with most operating systems. You can download it using one +of a variety of package managers, or you can build from source. See the [installation page](./installation.md) for more information. ## Open-Source