diff --git a/README.md b/README.md index a005b8746d..33366e1897 100644 --- a/README.md +++ b/README.md @@ -960,6 +960,49 @@ There are a few subtle differences from the Fetch API which are meant to limit t - some options and behaviors are not applicable to Node.js and will be ignored by `node-fetch`. See this list of [known differences](https://github.com/node-fetch/node-fetch/blob/1780f5ae89107ded4f232f43219ab0e548b0647c/docs/v2-LIMITS.md). - `method` will automatically get upcased for consistency. +## Automatic Hashing Detection with `processHashing` + +Our popular segment Adtect destinations support [automatic hash detection](https://segment.com/docs/connections/destinations/#hashing) of personally identifyable information (PII). If your destination hashes PII data, we recommend you use the `processHashing` utility instead of `createHash` from `crypto` module. + +The `processHashing` utility supports `md5`, `sha1`,`sha224`,`sha256`,`sha384` and`sha512` hashing algorithms. It can output digests in `hex` or `base64` format. + +**Note**: For empty or whitespace-only strings, the `processHashing` outputs an empty string instead of throwing an error like `createHash` hash module. + +### Example 1: Hashing an Email Address + +``` + import { processHashing } from 'destination-actions/lib/hashing-utils' + + const email = ' Person@email.com ' + const hashedEmail = processHashing( + email, + 'sha256', + 'hex', + (value) => value.trim().toLowerCase() + ) + + console.log(hashedEmail) // hashed string +``` + +### Example 2: Hashing a Phone Number + +``` + const phone = '+1(706)-767-5127' + const normalizePhone = (value: string) => value.replace(/[^0-9]/g, '') + + const hashedPhone = processHashing( + phone, + 'sha256', + 'hex', + normalizePhone + ) + + console.log(hashedPhone) // hashed string +``` + +**Requesting Additional Algorithms** +To request additional hash algorithms, contact partner-support@segment.com. + ## Support For any issues, please contact our support team at partner-support@segment.com. @@ -991,3 +1034,7 @@ SOFTWARE. ## Contributing All third party contributors acknowledge that any contributions they provide will be made under the same open source license that the open source project is provided under. + +``` + +```