crypto.subtle.digest返回一个空对象的原因是因为该方法是一个异步操作,它返回一个Promise对象,而不是直接返回结果。当Promise对象被解析时,它将提供一个表示计算出的摘要的ArrayBuffer。
在使用crypto.subtle.digest方法时,需要使用await关键字或.then()方法来处理Promise对象的结果。以下是一个示例代码:
async function calculateDigest(data) {
const encoder = new TextEncoder();
const dataBuffer = encoder.encode(data);
const digestBuffer = await crypto.subtle.digest('SHA-256', dataBuffer);
// 将ArrayBuffer转换为十六进制字符串
const digestArray = Array.from(new Uint8Array(digestBuffer));
const digestHex = digestArray.map(byte => byte.toString(16).padStart(2, '0')).join('');
return digestHex;
}
const data = 'Hello, world!';
calculateDigest(data)
.then(digest => {
console.log('Digest:', digest);
})
.catch(error => {
console.error('Error:', error);
});
在上述代码中,我们使用了TextEncoder将字符串转换为ArrayBuffer,并使用crypto.subtle.digest方法计算SHA-256摘要。然后,我们将ArrayBuffer转换为十六进制字符串,并将结果打印到控制台。
关于crypto.subtle.digest方法的更多信息,可以参考腾讯云的相关文档:crypto.subtle.digest
领取专属 10元无门槛券
手把手带您无忧上云