UNPKG

redacted-ts

Version:
94 lines (66 loc) 3.91 kB
# redacted-ts _Redacting classified documents_ ![GitHub tag (latest by date)](https://img.shields.io/github/v/tag/cyrildever/redacted) ![GitHub last commit](https://img.shields.io/github/last-commit/cyrildever/redacted) ![GitHub issues](https://img.shields.io/github/issues/cyrildever/redacted) ![GitHub license](https://img.shields.io/github/license/cyrildever/redacted) ![npm](https://img.shields.io/npm/dw/redacted-ts) This repository holds the code base for my `redacted-ts` library in TypeScript as well as its companion CLI: [`redacted-cli`](cli/README.md). \ It is mainly based off my [Feistel cipher for Format-Preserving Encryption](https://github.com/cyrildever/feistel-cipher) to which I added a few tools to handle document, database and file manipulation to ease out the operation. ### Motivation In some fields (like healthcare for instance), protecting the privacy of data whilst being able to conduct in-depth studies is both vital and mandatory. Redacting documents and databases is therefore the obligatory passage. With `redacted-ts`, I provide a simple yet secure tool to help redacting documents based on either a dictionary, a record layout or a tag to decide which parts should actually be redacted. ### Usage You can use either a dictionary or a tag (or both) to identify the words you want to redact in a document. The tag should be placed before any word that should be redacted. The default tag is the tilde character (`~`). For example, the following sentence will only see the word `tagged` redacted: `"This is a ~tagged sentence"`. ```console $ npm install redacted-ts ``` ```typescript import { DefaultRedactor, Dictionary } from 'redacted-ts' import { FPECipher, SHA_256 } from 'feistel-cipher' const source = 'Some text ~tagged or using words in a dictionary' const cipher = new FPECipher(SHA_256, key, 10) const redactor = DefaultRedactor(cipher) const redacted = redactor.redact(source) const expanded = redactor.expand(redacted) assert(expanded === source) const cleansed = redactor.clean(expanded) assert(cleansed === 'Some text tagged or using words in a dictionary') ``` ### CLI You can also install it globally and use it as a CLI for handling files: ```console $ npm i -g redacted-cli $ redacted -V ``` ```console $ redacted --help ____ _ _ _ | _ \ ___ __| | __ _ ___| |_ ___ __| | | |_) / _ \/ _` |/ _` |/ __| __/ _ \/ _` | | _ < __/ (_| | (_| | (__| || __/ (_| | |_| \_\___|\__,_|\__,_|\___|\__\___|\__,_| Usage: redacted [options] A TypeScript-based CLI to redacting classified documents Options: -V, --version output the version number -b, --both add to use both dictionary and tag -d, --dictionary <value> the optional path to the dictionary of words to redact -H, --hash <value> the hash engine for the round function (default "sha-256") -i, --input <value> the path to the document to be redacted -k, --key <value> the optional key for the FPE scheme (leave it empty to use default) -o, --output <value> the name of the output file -r, --rounds <value> the number of rounds for the Feistel cipher (default 10) -t, --tag <value> the optional tag that prefixes words to redact (default "~") -x, --expand add to expand a redacted document -h, --help display help for command ``` _NB: The dictionary file must consist of space-separated words._ ### License The use of the `redacted` libraries and executables are subject to fees for commercial purpose and to the respect of the [BSD-2-Clause-Patent license](LICENSE). \ Please [contact me](mailto:cdever@pep-s.com) to get further information. _NB: It is still under development so use in production at your own risk for now._ <hr /> &copy; 2021-2026 Cyril Dever. All rights reserved.