
Quickly see what you're currently working on as posts display most recently edited first, plus you can easily re-order posts by created date, and title
When you’re doing things that are confidential, or private, or personal, then they should remain so.
Encrypted Post Type adds an encrypted post type where the content of posts is encrypted using OpenSSL. Use it to write notes, keep a diary, draft letters, plan your next career move, even project manage – basically anything important that you want to keep private, Encrypted Post Type is the place to put it.
Coming complete with an advanced but simple tagging system you can easily organise your posts to create a powerful tool that works just the way you need it to, and can replace other tools like Roam, Workflowy, OneNote, Evernote, and more.
Want a feature added? You can request a new feature here.
The block editor (Gutenberg) saves data in post_content as html markup – it’s this that is encrypted.
When the plugin is installed and activated a key is randomly generated that is saved in the options table of your site. This key is not used to encrypt content of posts – we’ll come back to it in a second. A directory is also created in the uploads directory that is used to store the encryption keys – the keys in this directory are used to encrypt data, but before they are saved in the directory they are encrypted with the key that was saved in the options table (with the Pro version the keys are saved on a different site for added security). So, the encryption keys are themselves encrypted.
When you create a new post the encryption key for that post is saved in the directory mentioned above (but remember, it’s encrypted before being saved) along with something called an Initialisation Vector (IV), which ensures the encrypted output (ciphertext) is unique.
When you save your post the key that was saved in the directory when the post was initially created is first decrypted using [a] the key saved in the options table, and [b] the Initialisation Vector (IV) that was saved alongside the key; the decrypted key is then used to encrypt the content and an IV is also saved alongside the post. The IV is updated each time the post is saved to ensure the encrypted output (ciphertext) is unique.
Encryption is done using aes128 and the OpenSSL library.
The WordPress block editor (also called Gutenberg) is an excellent writing tool. It’s better than Microsoft Word at word processing (although that probably says more about Word), and is also a formidable website page builder (albeit a significant departure from WordPress of old). And it is so powerful, and has so much potential, that it could conceivably become the de-facto editor of the internet. It makes an excellent tool for taking notes, writing documents, and building web pages. And it has another trick up its sleeve that lends itself very well to encryption. Because of the need for Gutenberg to be backwards compatible with the rest of WordPress, the output of Gutenberg is simple html markup. Because the markup Gutenberg generates is so simple, almost all Gutenberg blocks are compatible with encryption.
If you want to make your content even more secure you can upgrade to the Pro version that includes an innovative way to manage your encryption keys called REST Key Management (RKM). RKM stores your encryption keys on a separate WordPress site that you control, meaning that both the site where your encrypted content is stored AND the site where your keys are stored would have to be compromised for your data to be at risk – and it would have to be a very bad day for that to happen.
Included with Pro:
PRO VERSION COMING SOON – get on the waitlist*
*Your email will only be used to let you know when the Pro version is available.
The core plugin is available for anyone to contribute to on Github here: github.com/NewJenk/EPT, pull requests are welcome. In addition, you can request a feature by filling in the form here.
Developer-friendly plugins can be extended to encrypt/decrypt content. Here are examples of how content can be encrypted and decrypted:
See the method en_p_t_encrypt_the_post in encrypted-post-type.php for an example of how to encrypt content.
See the example here: https://encryptedposttype.com/kb/about#decrypting-content