1

我正在尝试导入现有密钥,但我得到的是:“AES 密钥数据必须是 128 或 256 位”

我有一个从 0 到 255 的 128 int 的 ArrayBuffer,即使我用 Uint8Array 包装它也无法正常工作。即使是新的 Uint8Array(128) 也会返回相同的错误。

crypto.subtle.importKey("raw", new Uint8Array(128), { name: "AES-CBC" }, true, ["encrypt", "decrypt"]).then(cryptoKey => {
            console.log(cryptoKey);

        }).catch(err => {
            console.log(err);
            });

4

1 回答 1

6

错误很明显;您使用的密钥缓冲区太大(1024 位)。如果您使用 16 或 32 个元素的Uint8数组,它可以工作:

crypto.subtle.importKey("raw", new Uint8Array(16), { name: "AES-CBC" }, true, ["encrypt", "decrypt"]).then(cryptoKey => {
    console.log(cryptoKey);

}).catch(err => {
    console.log(err);
});
于 2017-11-27T14:35:53.217 回答