gpt4 book ai didi

javascript - 使用 WebAPI window.crypto.subtle.encrypt() 加密数据时出现 TypeError

转载 作者:太空宇宙 更新时间:2023-11-04 16:00:45 24 4
gpt4 key购买 nike

当我尝试在 Firefox 上使用 Crypto API 时遇到了问题。 (doc)当我尝试使用此函数加密明文时,出现类型错误:

window.crypto.subtle.encrypt(algo_enc,key,padded_clear_txt);

( doc )

这就是我定义参数的方式:

algo_enc:

var iv = new Int32Array(4) ;//4-32 bit integers (128 bits)    
window.crypto.getRandomValues(iv); //defining the IV
var algo_enc = {"name": "AES-CBC", iv}

键:

var alg_key = {"name":"AES-CBC","length":128};   
var key = window.crypto.subtle.generateKey(alg_key,false,["encrypt","decrypt"]);

pated-clear-txt 是我想要加密的 256 位 (2*128) 消息。

这是我执行加密函数时遇到的错误:

Argument 2 of SubtleCrypto.encrypt does not implement interface CryptoKey.

key 的生成很顺利,它是一个 CryptoKey 对象,但我仍然收到此错误。所以也许这是我应该报告的错误......

最佳答案

WebCrypto 函数返回 Promises。它们不同步。结果在回调中收到。看这个full example

window.crypto.subtle.generateKey( { name: "AES-CBC", length: 128 }, false,  ["encrypt", "decrypt"] )
.then(function(key){
var iv = window.crypto.getRandomValues(new Uint8Array(16))
window.crypto.subtle.encrypt({ name: "AES-CBC",iv: iv,}, key, dataToEncrypt )
.then(function(encrypted){
//returns an ArrayBuffer containing the encrypted data
}).catch(function(err){
console.error(err);
});
}).catch(function(err){
console.error(err);
});

请注意,webcrypto 使用 ArrayBuffer 来存储输入和输出数据

关于javascript - 使用 WebAPI window.crypto.subtle.encrypt() 加密数据时出现 TypeError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42302420/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com