Merge pull request #552 from Chalarangelo/hash

[FEATURE] Hash methods
This commit is contained in:
Angelos Chalaris
2018-01-17 21:25:29 +02:00
committed by GitHub
4 changed files with 40 additions and 1 deletions

22
snippets/hashBrowser.md Normal file
View File

@ -0,0 +1,22 @@
### hashBrowser
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(console.log); // '04aa106279f5977f59f9067fa9712afc4aedc6f5862a8defc34552d8c7206393'
```

15
snippets/hashNode.md Normal file
View File

@ -0,0 +1,15 @@
### hashNode
Creates a hash for a value using the [SHA-256](https://en.wikipedia.org/wiki/SHA-2) algorithm. Returns a promise.
Use `crypto` API to create a hash for the given value.
```js
const crypto = require('crypto');
const hashNode = val =>
new Promise(resolve => setTimeout(() => resolve(crypto.createHash('sha256').update(val).digest('hex')),0));
```
```js
hashBrowser(JSON.stringify({a :'a', b: [1,2,3,4], 'foo': {c: 'bar'}})).then(console.log); // '04aa106279f5977f59f9067fa9712afc4aedc6f5862a8defc34552d8c7206393'
```