diff --git a/core/modules/filters/crypto.js b/core/modules/filters/crypto.js new file mode 100644 index 000000000..24f1a0df9 --- /dev/null +++ b/core/modules/filters/crypto.js @@ -0,0 +1,27 @@ +/*\ +title: $:/core/modules/filters/crypto.js +type: application/javascript +module-type: filteroperator + +Filter operators for cryptography, using the Stanford JavaScript library + +\*/ +(function(){ + +/*jslint node: true, browser: true */ +/*global $tw: false */ +"use strict"; + +exports.sha256 = function(source,operator,options) { + var results = [], + length = parseInt(operator.operand,10) || 20, + sha256 = function(text) { + return sjcl.codec.hex.fromBits(sjcl.hash.sha256.hash(text)).substr(0,length); + }; + source(function(tiddler,title) { + results.push(sha256(title)); + }); + return results; +}; + +})(); diff --git a/editions/tw5.com/tiddlers/filters/sha256 Operator.tid b/editions/tw5.com/tiddlers/filters/sha256 Operator.tid new file mode 100644 index 000000000..fbc5b4406 --- /dev/null +++ b/editions/tw5.com/tiddlers/filters/sha256 Operator.tid @@ -0,0 +1,18 @@ +caption: sha256 +created: 20220129105504961 +modified: 20220129105504961 +op-input: a [[selection of titles|Title Selection]] +op-output: the base64 encoded sha256 of the input, truncated to the specified length +op-parameter: the number of characters to return, up to a maximum of 64 +op-parameter-name: L +op-purpose: apply sha256 hash to a string +tags: [[Filter Operators]] [[String Operators]] +title: sha256 Operator +type: text/vnd.tiddlywiki +from-version: 5.1.14 + +Hashes are a way of turning strings of arbitrary length into obfuscated strings of fixed length. They are often used in situations where items need to be stored by name but it is inconvenient to allow arbitrary length strings. + +See Wikipedia for details of the [[sha256|https://en.wikipedia.org/wiki/SHA-2]] operation. + +<<.operator-examples "sha256">>