我一直在寻找pbkdf2函数,却被this发疯了
async function pbkdf2(password, iterations=1e3) {
const pwUtf8 = new TextEncoder().encode(password); // encode pw as UTF-8
const pwKey = await crypto.subtle.importKey('raw', pwUtf8, 'PBKDF2', false, ['deriveBits']); // create pw key
const saltUint8 = crypto.getRandomValues(new Uint8Array(16)); // get random salt
const params = { name: 'PBKDF2', hash: 'SHA-256', salt: saltUint8, iterations: iterations }; // pbkdf2 params
const keyBuffer = await crypto.subtle.deriveBits(params, pwKey, 256); // derive key
const keyArray = Array.from(new Uint8Array(keyBuffer)); // key as byte array
const saltArray = Array.from(new Uint8Array(saltUint8)); // salt as byte array
const iterHex = ('000000'+iterations.toString(16)).slice(-6); // iter’n count as hex
const iterArray = iterHex.match(/.{2}/g).map(byte => parseInt(byte, 16)); // iter’ns as byte array
const compositeArray = [].concat(saltArray, iterArray, keyArray); // combined array
const compositeStr = compositeArray.map(byte => String.fromCharCode(byte)).join(''); // combined as string
const compositeBase64 = btoa('v01'+compositeStr); // encode as base64
return compositeBase64; // return composite key
}
我想从页面中调用此函数并打印输出,但是我以前从未使用过异步函数,也无法在google上找到任何答案。
我得到的返回值是
[对象承诺]
我想知道如何打印此函数的返回值。 作为示例,我不知道如何实现等待。
我正在使用
我如何使以下工作正常?
document.getElementById(“ demo”)。innerHTML = pbkdf2(“ test”);
我也没有在标记为重复的this中找到答案。