Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/cyrildever/peeel
Simple data footprint
https://github.com/cyrildever/peeel
data-footprint hashed-data typescript
Last synced: 2 months ago
JSON representation
Simple data footprint
- Host: GitHub
- URL: https://github.com/cyrildever/peeel
- Owner: cyrildever
- License: mit
- Created: 2020-09-23T16:49:47.000Z (about 4 years ago)
- Default Branch: master
- Last Pushed: 2024-09-11T14:54:23.000Z (3 months ago)
- Last Synced: 2024-09-11T23:02:34.265Z (3 months ago)
- Topics: data-footprint, hashed-data, typescript
- Language: TypeScript
- Homepage:
- Size: 1020 KB
- Stars: 3
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# peeel
_Compact identity footprint_![GitHub tag (latest by date)](https://img.shields.io/github/v/tag/cyrildever/peeel)
![npm](https://img.shields.io/npm/dw/peeel)
![GitHub last commit](https://img.shields.io/github/last-commit/cyrildever/peeel)
![GitHub issues](https://img.shields.io/github/issues/cyrildever/peeel)
![NPM](https://img.shields.io/npm/l/peeel)This is a TypeScript library for building a simple contact data footprint as a hash. It's working in both the browser and a NodeJS environment.
### Motivation
For anyone who needs to have consistent ways to compare identity data.
### Description
The Peeel™ algorithm is used to create a unique string from complementary data of a contact data (like in the `hashData` field of the *Controllers* in the Fruuut™ and Rooot™ systems).
It follows the rules below:
- each source data must first be normalized according to the Empreinte Sociométrique's standards;
- the normalized data should then be hashed using the SHA-256 algorithm applied twice;
- the hashed data should then be concatenated in the exact order of the complementaries' code (eg. hashed date of birth then hashed firstname for `dob+firstname`);
- this concatenation should itself be hashed using the SHA-256 algorithm twice to form the final hash data.The result passed to the `hashData` field is the hexadecimal string representation of the returned hash.
As of this version, the available complementary data are the following:
- `dob`: a date of birth (respecting the ISO format, ie. `YYYYMMDD`);
- `gender`: `1` for male, `2` for female, or `0` for unknown;
- `firstname`: a first name;
- `lastname`: a last name;
- `middle`: the middle names or initials (eg. the `F.` in `John F. Kennedy`).For further details, you might want to check our [white paper](documentation/src/latex/peeel_whitepaper.pdf).
### Usage
```
npm i peeel
``````typescript
import { build, complementariesToString, FIRST_NAME, LAST_NAME, parseComplementaries, Source } from 'peeel'const firstname: Source = {
data: 'John',
complementary: FIRST_NAME
}
const dob: Source = {
data: '20000101',
complementary: DATE_OF_BIRTH
}
const [hashData, compl] = build([firstname, dob])// ae76d56055a9acb1fddde77074dcf5353724cb0f6bcb64110f698b19c34be32b
console.log(hashData)const complStr = complementariesToString(compl)
// firstname+dob
console.log(complStr)const complementaries = parseComplementaries(complStr)
console.assert(complementaries === compl)
```##### Dependencies
This library relies on the following dependency:
* [`es-normalizer`](https://www.npmjs.com/package/es-normalizer).Besides, to run the tests, you would need to install [`live-server`](https://www.npmjs.com/package/live-server):
```console
npm i -g live-server
```
_NB: Change the port number if it's alreayd in use on your machine._### License
This module is distributed under a MIT license. \
See the [LICENSE](LICENSE) file.
© 2020-2024 Cyril Dever. All rights reserved.