SHA-256 in JavaScript, in less than a kilobyte