peeel
v1.2.6
Published
Compact data footprint
Downloads
68
Maintainers
Readme
peeel
Compact identity footprint
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, or0
for unknown;firstname
: a first name;lastname
: a last name;middle
: the middle names or initials (eg. theF.
inJohn F. Kennedy
).
For further details, you might want to check our white paper.
Usage
npm i peeel
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:
Besides, to run the tests, you would need to install live-server
:
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 file.