gpt4 book ai didi

javascript - 在 JS 中派生 AES-KW key

转载 作者:行者123 更新时间:2023-11-28 03:04:20 26 4
gpt4 key购买 nike

我尝试在 js 中派生 AES-KW key ,例如:

let { publicKey: pub, privateKey: key } = 
await crypto.subtle.generateKey(
{ name: 'ECDH', namedCurve: 'P-521' },
true,
['deriveKey'],
)

await crypto.subtle.deriveKey(
{ name: 'ECDH', public: pub },
key,
{ name: 'AES-KW', length: 256 },
false,
["encrypt", "decrypt"],
)

出现错误:未捕获( promise 中)DOMException:无法使用指定的 key 用法创建 key 。

我不知道为什么,因为AES-GCM可以成功。

最佳答案

从技术上讲,crypto.subtle.deriveKey with name: 'AES-KW' as 衍生 key 算法提供了一个 key ,可用于根据RFC 3394包装另一个 key ,另见AES-KW 。对于此 ['wrapKey', 'unwrapKey'] 必须用作 keyUsages 而不是 ['encrypt', 'decrypt'],另请参阅此example (getKey) .

使用名称:'AES-GCM'作为衍生 key 算法['加密','解密']作为keyUsages 提供了一个 key ,可用于使用 AES-GCM 进行加密和解密

AES-KW 示例:

crypto.subtle.generateKey(
{ name: 'ECDH', namedCurve: 'P-521' },
true,
['deriveKey']
).then(function(keypair){
crypto.subtle.deriveKey(
{ name: 'ECDH', public: keypair.publicKey }, // In practice, this is the public key of the recipient
keypair.privateKey, // In practice, this is the own private key
{ name: 'AES-KW', length: 256 },
true,
["wrapKey", "unwrapKey"],
).then(function(wrappingKey){
console.log(wrappingKey);
})
})

关于javascript - 在 JS 中派生 AES-KW key ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60734062/

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