crypt.js 1.1 KB

1234567891011121314151617181920212223242526272829303132333435
  1. import crypto from 'crypto';
  2. export const encrypt = (buffer, key, algorithm = 'aes-256-cbc') => {
  3. const iv = crypto.randomBytes(16);
  4. let cipher = crypto.createCipheriv(algorithm, Buffer.from(key, 'base64'), iv);
  5. let encrypted = cipher.update(buffer);
  6. encrypted = Buffer.concat([encrypted, cipher.final()]);
  7. return {
  8. iv: iv.toString('base64'),
  9. encryptedData: encrypted.toString('base64'),
  10. };
  11. };
  12. export const decrypt = (data, key, algorithm = 'aes-256-cbc') => {
  13. let iv = Buffer.from(data.iv, 'base64');
  14. let encryptedText = Buffer.from(data.encryptedData, 'base64');
  15. let decipher = crypto.createDecipheriv(
  16. algorithm,
  17. Buffer.from(key, 'base64'),
  18. iv
  19. );
  20. let decrypted = decipher.update(encryptedText);
  21. decrypted = Buffer.concat([decrypted, decipher.final()]);
  22. return decrypted.toString();
  23. };
  24. export const generateKey = () =>
  25. Buffer.from(crypto.randomBytes(32)).toString('base64');
  26. /* test
  27. const algo = 'aes-256-cbc';
  28. const key = Buffer.from(crypto.randomBytes(32)).toString('base64');
  29. const result = encrypt(Buffer.from('toto'), key, algo);
  30. const decrypted = decrypt(result, key, algo);
  31. */