It's better when it's simple

User Tools

Site Tools


dokucrypt2 Plugin

Compatible with DokuWiki

  • 2018-04-22 "Greebo" yes
  • 2017-02-19 "Frusterick Manners" unknown
  • 2016-06-26 "Elenor Of Tsort" unknown
  • 2015-08-10 "Detritus" unknown

plugin A plugin to support client side cryptography.

Last updated on
Conflicts with

Similar to dokucrypt

Tagged with encryption, password

By Scott Moser (, maintained by Sherri W. (@SherriOnline /

:!: This replaces the: Original DokuCrypt Plugin.


This is a newly maintained version of the DokuCrypt plugin. It is fully patched for the latest version of Dokuwiki (last tested on Release 2018-04-22b+ “Greebo”).

Search and install the plugin using the Extension Manager. Refer to Plugins on how to install plugins manually.

Note: I have copied and updated this plugin due to it being very important for my day-to-day use. The original author hasn't touched it in years, and I hope he won't mind. 8-)

:!: Old Versions of DokuWiki require patches after install, see below.


2017-06-26 04:45


dokucrypt is a client side (javascript) cryptography plugin. This plugins allows a user to store and access sensitive data in a dokuwiki. All sensitive data is encrypted before it is submitted and decrypted on the clients machine. A users' sensitive data will only be accessible when viewed with a javascript enabled browser and the proper pass phrase. It will never be transmitted or stored in plain text, and you will avoid having passwords and sensitive data stored in plain text on the server.

The Javascrypt ( library is used for encryption and decryption to provide 256 Bit AES encryption.


  • 2017-06-25 - Fork the original plugin. Patch it up. Release for most recent DokuWiki version. Cheers!
  • 2017-11-08 - Fixed an issue with the heading buttons 'PATCH 1' required (above). Added plugin info text file.
  • 2020-02-07 - Updated for PHP v 7+.


Entering Encrypted Data

In order to encrypt some sensitive data, the user needs to add text like the following

Hi world.  I have a secret.  Can you read it?
< SECRET>I like ice cream< /SECRET>
  • Note: the space before 'SECRET' must be removed

When the user hits 'Save' (or a draft is attempted to be saved) a prompt will open, asking the user to enter a pass phrase key for the encryption. Once supplied, the encryption will be done in the browser and the encrypted text submitted to the server.

Viewing Encrypted Data

When the page is viewed, the user will see the encrypted text and a link 'Decrypt Encrypted Text' will appear which will prompt the user for a password and decrypt the text (see the example below).

The encrypted text is compatible with javascrypt decryption (

Editing Encrypted Data

To edit the encrypted data, the user needs to Edit the wiki page. When first loaded, encrypted text will appear encrypted, surrounded by <ENCRYPTED> and </ENCRYPTED> tags. To edit this text, the user needs to press the 'DecryptSecret' button between 'Save' and 'Preview', and supply the correct pass phrase. The encrypted text will be decrypted to the 'SECRET' form showed above, and the use can edit in plaintext. Submits or drafts will be encrypted before submission with the same pass phrase supplied.

Known Issues / Feature Requests

:!: Moved to the GitHub Issues page. :!:

Bugs - Please Submit Bugs On GitHub

:!: NEW: Opened the Issues page on GitHub. Please log bugs there. :!:

Previous bugs have been MOVED to GitHub.

PATCH 1: Resolving problems with toolbar header buttons

NOTE: This fix was merged into Dokuwiki core as of Oct, 10 2019. So new versions of Dokuwiki released after that date will not need this patch.

The header buttons in the editor toolbar are not working.

Here is the patch for version 2017-02-19b+:

--- \lib\scripts\edit-original.js
+++ \lib\scripts\edit.js
@@ -143,16 +143,17 @@
  * @author Andreas Gohr <>
 function currentHeadlineLevel(textboxId){
     var field = jQuery('#' + textboxId)[0],
         s = false,
         opts = [field.value.substr(0,getSelection(field).start)];
-    if (field.form.prefix) {
-        // we need to look in prefix context
-        opts.push(field.form.prefix.value);
-    }
+        //if (field.form.prefix) {  // Dokucrypt Plugin Mod
+        if (field.form && field.form.prefix) {  // Dokucrypt Plugin Mod
+            // we need to look in prefix context
+            opts.push(field.form.prefix.value);
+        }
     jQuery.each(opts, function (_, opt) {
         // Check whether there is a headline in the given string
         var str = "\n" + opt,
             lasthl = str.lastIndexOf("\n==");
         if (lasthl !== -1) {

Posted by: — Sherrisherri

2017/11/08 10:12

Manual Patch Instructions

  1. In the file /lib/scripts.edit.js
  2. Find the section: function currentHeadlineLevel(textboxId){
  3. Inside that section (function), find: if (field.form.prefix) {
  4. Change it to: if (field.form && field.form.prefix) {
  5. That's it.
  6. You may need to shift+refresh the page after changing this file.
plugin/dokucrypt2.txt · Last modified: 2020-02-07 18:24 by sherri