簡體   English   中英

Node.js和Webcrypto之間的RSA加密

[英]RSA crypto between Node.js and webcrypto

我真的很堅持! 我正在嘗試做的是:

  • 使用ursa / webcrypto生成RSA密鑰對
  • 通過電線將公鑰作為PEM發送
  • 在另一端導入公鑰,並用它加密一些文本
  • 發回密文,並使用私鑰在另一端將其解密

現在,如果嘗試使用ursa進行加密部分,或者以某種方式在瀏覽器中得到未定義的DOMException,或者在瀏覽器中進行加密時在Node.js中得到此錯誤:

Missing error handler on `socket`.
Error: error:040A1079:rsa routines:RSA_padding_check_PKCS1_OAEP_mgf1:oaep decoding error
    at Error (native)
    at Object.decrypt (/home/jeroen/projects/crypto-nodebrowser/node_modules/ursa/lib/ursa.js:358:33)
    at Socket.<anonymous> (/home/jeroen/projects/crypto-nodebrowser/server.js:34:50)
    at emitOne (events.js:77:13)
    at Socket.emit (events.js:169:7)
    at Socket.onevent (/home/jeroen/projects/crypto-nodebrowser/node_modules/socket.io/lib/socket.js:330:8)
    at Socket.onpacket (/home/jeroen/projects/crypto-nodebrowser/node_modules/socket.io/lib/socket.js:290:12)
    at Client.ondecoded (/home/jeroen/projects/crypto-nodebrowser/node_modules/socket.io/lib/client.js:193:14)
    at Decoder.Emitter.emit (/home/jeroen/projects/crypto-nodebrowser/node_modules/component-emitter/index.js:134:20)
    at Decoder.add (/home/jeroen/projects/crypto-nodebrowser/node_modules/socket.io-parser/index.js:247:12)

我在https://github.com/jvanveen/crypto-nodebrowser上做了一個最小的代碼示例,以顯示該問題。 歡迎對此提供任何幫助!

您能否同時告訴我們您正在運行的代碼和正在運行的瀏覽器?

某些瀏覽器可能僅對SHA-1執行RSA-OAEP,但從您提供的簡短描述來看,解密存在問題。 我認為需要更多細節。

好的,我終於明白了。 Openssl的OAEP填充使用SHA1進行了硬編碼,因此,如果您想使用RSA-OAEP-256,則ursa的openssl綁定不適合。 我找不到使它與node-rsa一起工作的方法,但是Node-forge在這里非常簡單。 只需使用類似:

 var encrypted = publicKey.encrypt(bytes, 'RSA-OAEP', { md: forge.md.sha256.create() }); 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM