类型错误Web加密importKey算法参数

时间:2019-03-28 18:27:33

标签: typescript webcryptoapi

我正在实现mdn所示的pbkdf2的示例。 我的测试代码是

pom.xml

这将导致以下错误(打字稿3.3.4000):

let enc = new TextEncoder();
let password = enc.encode("password");
window.crypto.subtle.importKey(
                "raw",
                password,
                {"name": "PBKDF2"},
                false,
                ["deriveBits", "deriveKey"]
                )

该代码在chrome中可以正常工作。

2 个答案:

答案 0 :(得分:0)

以下(丑陋的)解决方法可以解决问题:

window.crypto.subtle.importKey(
                "raw",
                password,
                {
                    "name": "PBKDF2",
                    // the next two lines are just to trick typescript
                    "generator": new Uint8Array(12),
                    "prime": new Uint8Array(12)
                },
                false,
                ["deriveBits", "deriveKey"]
                )

这很丑陋,因为它诱使打字稿认为PBKDF2对象与实际对象有所不同。

答案 1 :(得分:0)

我认为这个例子是错误的。当您查看Parameters section / algorithm上方时,您会看到:

对于PBKDF2:传递字符串PBKDF2。

因此,不要使用{name: 'PBKDF2'}来代替'PBKDF2'

MDN:SubtleCrypto.importKey()
https://developer.mozilla.org/en-US/docs/Web/API/SubtleCrypto/importKey#Parameters