From 1a0c831216c397c6fef8e5685e47857193411a1b Mon Sep 17 00:00:00 2001 From: "jeremy@jermolene.com" Date: Sat, 29 Jan 2022 11:02:47 +0000 Subject: [PATCH] Add sha256 operator --- core/modules/filters/crypto.js | 27 +++++++++++++++++++ .../tiddlers/filters/sha256 Operator.tid | 18 +++++++++++++ 2 files changed, 45 insertions(+) create mode 100644 core/modules/filters/crypto.js create mode 100644 editions/tw5.com/tiddlers/filters/sha256 Operator.tid 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">>