SHA-256, HMAC and PBKDF2 implementation in JavaScript with typed arrays for modern browsers and Node.js