gpt4 book ai didi

javascript - 在 IE 11 中使用 SubtleCrypto

转载 作者:行者123 更新时间:2023-11-29 10:30:54 32 4
gpt4 key购买 nike

我正在尝试让 SubtleCrypto 与 IE 11 一起工作。具体来说,我只是想简单地加密一些东西,让我开始,我已经能够为 AES-CBC 生成一个 key ,但是当我尝试进行加密时出现错误:“类型不匹配错误”。

我有一个 JSFiddle:https://jsfiddle.net/tuwzsyyp/

        try {
//Asynchronous crypto
window.msCrypto.subtle.generateKey(
{ name: 'AES-CBC', length: 256 },
false,
['encrypt']
)
.oncomplete = function (key) {
try {
window.msCrypto.subtle.encrypt(
{
name: "AES-CBC",
iv: initialisationVector
},
key, //from generateKey or importKey above
new Uint16Array(currentArrayBuffer) //ArrayBuffer of data you want to encrypt
).oncomplete = function (encrypted) {
alert(3 + "; " + new Uint16Array(encrypted));
};
} catch (err) {
alert(err);
}
};
} catch (err) {
alert(err);
}

我认为很可能是输入数据的类型错误,但 Microsoft 文档并不清楚。它说它需要是一个 ArrayBufferView,但据我所知,一个 Uint16Array 应该满足它。

最佳答案

我找到了答案 here .

原来IE 11返回的是事件而不是直接返回结果。因此,我的示例代码变为:

window.msCrypto.subtle.generateKey(
{ name: 'AES-CBC', length: 256 },
false,
['encrypt']
)
.oncomplete = function (e) {
var key = e.target.result;

try {
window.msCrypto.subtle.encrypt(
{
name: "AES-CBC",
iv: initialisationVector
},
key, //from generateKey or importKey above
new Uint16Array(currentArrayBuffer) //ArrayBuffer of data you want to encrypt
).oncomplete = function (e) {
var encrypted = e.target.result;

alert(3 + "; " + ab2str(encrypted));
};
} catch (err) {
alert(err);
}
};

这就是我们遵守规范的原因。

关于javascript - 在 IE 11 中使用 SubtleCrypto,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46359919/

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