JavaScript WebCrypto importKey error : AES key data must be 128 or 256 bits
JavaScript WebCrypto importKey error : AES key data must be 128 or 256 bits
我正在尝试导入现有密钥,但无论我做什么,我都得到了:
"AES key data must be 128 or 256 bits"
我有一个从 0 到 255 的 128 int 的 ArrayBuffer,即使我用 Uint8Array 包装它也无法正常工作。即使是 new Uint8Array(128) returns 同样的错误。
crypto.subtle.importKey("raw", new Uint8Array(128), { name: "AES-CBC" }, true, ["encrypt", "decrypt"]).then(cryptoKey => {
console.log(cryptoKey);
}).catch(err => {
console.log(err);
});
错误很明显;您使用的密钥缓冲区太大(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);
});
我正在尝试导入现有密钥,但无论我做什么,我都得到了: "AES key data must be 128 or 256 bits"
我有一个从 0 到 255 的 128 int 的 ArrayBuffer,即使我用 Uint8Array 包装它也无法正常工作。即使是 new Uint8Array(128) returns 同样的错误。
crypto.subtle.importKey("raw", new Uint8Array(128), { name: "AES-CBC" }, true, ["encrypt", "decrypt"]).then(cryptoKey => {
console.log(cryptoKey);
}).catch(err => {
console.log(err);
});
错误很明显;您使用的密钥缓冲区太大(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);
});