我想知道如何解决这个问题。我使用 WebCrypto API 生成 RSA-OAEP 密钥对,然后从导出为 ArrayBuffer 的密钥对中导出 pkcs8 中的私钥,并且我想将此 ArrayBuffer 编码为 base64,以便可以将其存储为 PEM。
\n\n在此测试示例中,我将密钥导出为 pkcs8 并将此 pkcs8 导入回 CryptoKey。问题是有时有效有时无效。
\n\n这些是代码的结果:\n注意:仅发生这些状态之一,而不是同时发生。\n注意2:此示例不包含 -----BEGIN PRIVATE KEY----- 前缀和后缀 我仅对钥匙。
\n\nCase1:未捕获(在承诺中)URIError:URI格式错误(\ xe2 \ x80 \ xa6)b64DecodeUnicode @ try.php:20b64toab @ try.php:70wayBack @ try.php:66(匿名函数)@ try.php:56
\n\nCase2:未定义:1未捕获(承诺中)DOMException
\n\nCase3:好的 - 一直可以正常工作。
\n\n我不知道是什么原因导致了错误,但我认为这与 base64 编码有关。正如我所说,有时私钥生成正常,有时则不行。
\n\n非常感谢您提前提供的每一个帮助。
\n\nfunction b64EncodeUnicode(str) {\n return btoa(encodeURIComponent(str).replace(/%([0-9A-F]{2})/g, function(match, p1) {\n return String.fromCharCode(\'0x\' + p1);\n }));\n}\n\nfunction b64DecodeUnicode(str) {\n return decodeURIComponent(Array.prototype.map.call(atob(str), function(c) {\n return \'%\' + (\'00\' + c.charCodeAt(0).toString(16)).slice(-2);\n …Run Code Online (Sandbox Code Playgroud)