generichash.js 1.0 KB

123456789101112131415161718192021222324
  1. var sodium = require('sodium').api;
  2. function generateKey (len) {
  3. var key = Buffer.allocUnsafe(len);
  4. sodium.randombytes_buf(key, len);
  5. return key
  6. }
  7. var message = Buffer.from('Time flies like an arrow; fruit flies like a banana.')
  8. var key1 = generateKey(sodium.crypto_generichash_KEYBYTES);
  9. var hash1 = sodium.crypto_generichash(sodium.crypto_generichash_BYTES, message, key1);
  10. console.log(' crypto_generichash:', hash1.toString('base64'));
  11. // Streaming API for larger files or data streams
  12. var chunk1 = Buffer.from('One must acknowledge with cryptography ');
  13. var chunk2 = Buffer.from('no amount of violence will ever solve a math problem.');
  14. var key2 = generateKey(sodium.crypto_generichash_KEYBYTES);
  15. var state = sodium.crypto_generichash_init(key2, sodium.crypto_generichash_BYTES);
  16. state = sodium.crypto_generichash_update(state, chunk1);
  17. state = sodium.crypto_generichash_update(state, chunk2);
  18. var hash2 = sodium.crypto_generichash_final(state, sodium.crypto_generichash_BYTES);
  19. console.log('Generichash streaming API:', hash2.toString('base64'));