diff --git a/snippets/hashBrowser.md b/snippets/hashBrowser.md new file mode 100644 index 000000000..262746cef --- /dev/null +++ b/snippets/hashBrowser.md @@ -0,0 +1,22 @@ +### functionName + +Creates a hash for a value using the [SHA-256](https://en.wikipedia.org/wiki/SHA-2) algorithm. Returns a promise. + +Use the [SubtleCrypto](https://developer.mozilla.org/en-US/docs/Web/API/SubtleCrypto) API to create a hash for the given value. + +```js +const hashBrowser = val => + crypto.subtle + .digest('SHA-256', new TextEncoder('utf-8').encode(val)) + .then(h => { + let hexes = [], + view = new DataView(h); + for (let i = 0; i < view.byteLength; i += 4) + hexes.push(('00000000' + view.getUint32(i).toString(16)).slice(-8)); + return hexes.join(''); + }); +``` + +```js +hashBrowser(JSON.stringify({a :'a', b: [1,2,3,4], 'foo': {c: 'bar'}})).then(hash => console.log(hash)); // '04aa106279f5977f59f9067fa9712afc4aedc6f5862a8defc34552d8c7206393' +``` diff --git a/snippets/hashNode.md b/snippets/hashNode.md new file mode 100644 index 000000000..9de0174b5 --- /dev/null +++ b/snippets/hashNode.md @@ -0,0 +1,14 @@ +### functionName + +Creates a hash for a value using the [SHA-256](https://en.wikipedia.org/wiki/SHA-2) algorithm. + +Use `crypto` API to create a hash for the given value. + +```js +const crypto = require('crypto'); +const hashNode = val => crypto.createHash('sha256').update(val).digest('hex'); +``` + +```js +hashNode(JSON.stringify({a :'a', b: [1,2,3,4], 'foo': {c: 'bar'}})); // '04aa106279f5977f59f9067fa9712afc4aedc6f5862a8defc34552d8c7206393' +``` diff --git a/tag_database b/tag_database index 84a3b4dfa..d7a60d942 100644 --- a/tag_database +++ b/tag_database @@ -65,6 +65,8 @@ groupBy:array,object hammingDistance:math hasClass:browser,css hasFlags:node +hashBrowser:browser,utility,advanced +hashNode:node,utility head:array hexToRGB:utility,string,math,advanced hide:browser,css