如何使用crypto.subtle.wrapkey使用AES-KW包装RSA-PSS私钥?
当尝试使用AES-KW包装RSA-PSS密钥时,我会遇到以下错误:
The AES-KW input data length is invalid: not a multiple of 8 bytes
但是有时候它可以工作,但是只有当“ PKCS8”格式中键的输出的长度可被8分组时。还在。
那我的问题是:是否不可能使用AES-KW包装RSA-PSS密钥?我找不到任何填充选项。如果没有,我最好选择IV路线的最佳选择?
请参阅下面的代码:
export async function wrapKeyAsync(key: CryptoKey, password: string) {
let keyMaterial = await crypto.subtle.importKey(
"raw",
new TextEncoder().encode(password),
{ name: "PBKDF2" },
false,
["deriveBits", "deriveKey"]
);
let salt = crypto.getRandomValues(new Uint8Array(16));
let wrappingKey = await crypto.subtle.deriveKey(
{
"name": "PBKDF2",
salt: salt,
"iterations": 100_000,
"hash": "SHA-256"
},
keyMaterial,
{ "name": "AES-KW", "length": 256 },
true,
["wrapKey", "unwrapKey"]
);
console.log((await crypto.subtle.exportKey("pkcs8", key)).byteLength / 8); // Only works when input is divisible by 8
return {
wrappedKey: new Uint8Array(await crypto.subtle.wrapKey(
"pkcs8",
key,
wrappingKey,
"AES-KW"
)),
salt
};
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论