首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何生成同时在node.js和浏览器中工作的RSA对

如何生成同时在node.js和浏览器中工作的RSA对
EN

Stack Overflow用户
提问于 2021-11-21 16:18:03
回答 2查看 74关注 0票数 1

我想在节点服务器和浏览器之间实现RSA加密。到目前为止,我已经在服务器上使用了node-rsa:

代码语言:javascript
复制
const RSA = require("node-rsa")
const key = new RSA({b: 512});
console.log(key.exportKey("public"))

它看起来像这样:

代码语言:javascript
复制
-----BEGIN PUBLIC KEY-----
MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAMSZQk6XJbPTr/0bY1OYQUPkUXfsC4K8
iPywjTpIDLZhw341cxPaiI0dxkP/GLvG+03xqboFMRFJbs4L5aXA9x0CAwEAAQ==
-----END PUBLIC KEY-----

我如何在浏览器中做同样的事情。

附言:我试过了node put,我想不出如何产生与SubtleCrypto -rsa相似的格式。

EN

回答 2

Stack Overflow用户

发布于 2021-11-22 12:48:17

您看到的是一个PEM编码的SubjectPublicKeyInfo或简称为"spki“。有用的是,official SuptleCrypto API提供了一个示例代码片段,展示了如何创建二进制结构并将其转换为PEM格式。

node-rsa NodeJS库错误地调用了这个'pkcs8',或者更具体地说是'pkcs8-public' (至少,这是我从他们的文档中发现的)。你可以投票的I've created bug report 208

票数 0
EN

Stack Overflow用户

发布于 2021-11-23 07:52:55

我在客户端找到了这段代码,它可以生成RSA对并导出公钥(由于某种原因,它不适用于私有密钥)。

代码语言:javascript
复制
async function exportCryptoKey(key) {
    const exportedAsBase64 = window.btoa(String.fromCharCode.apply(null, new Uint8Array(await window.crypto.subtle.exportKey("spki", key))))
    return `-----BEGIN PUBLIC KEY-----\n${exportedAsBase64}\n-----END PUBLIC KEY-----`
}
async function main(){
    keyPair = await window.crypto.subtle.generateKey({
            name: "RSA-OAEP",
            modulusLength: 2048,
            publicExponent: new Uint8Array([1, 0, 1]),
            hash: "SHA-256",
        }, true, ["encrypt", "decrypt"])
    console.log(await exportCryptoKey(keyPair.publicKey))
}
main()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70056340

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档