<script src="https://cdnjs.cloudflare.com/ajax/libs/forge/0.9.1/forge.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/sjcl-full@1.0.0/sjcl.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/@cryptography/sha512@0.1.1/dist/umd/sha512.min.js"></script>
var buf = new Uint8Array(256);
window.crypto.getRandomValues(buf);
var str = String.fromCharCode.apply(null, buf);forge.md.sha512.create().update(str).digest();sha512.default(str, 'array');crypto.subtle.digest("SHA-512", buf).then(() => {
deferred.resolve();
});sjcl.hash.sha512.hash(str)