【发布时间】:2019-05-15 12:33:29
【问题描述】:
我在尝试使用由 NodeJS Crypto 加密的 Elixir(使用 ExCrypto - 它是加密和 public_key 的唯一包装)中解密时遇到问题。
这是有效的:
- NodeJS 中的encrypt_public -> decrypt_private NodeJS(工程)
- Elixir 中的encrypt_public -> Elixir 中的 decrypt_pricate (Works)
但是:
- NodeJS 中的encrypt_public -> Elixir 中的 decrypt_private(不起作用)
似乎来自 Node 的 encrypt_public 不能被 Elixir 中的 decrypt_private 解密。 我什至直接用 Erlang 模块 public_key 尝试了艰难的方法,它给了我相同的结果。
这是我尝试过的:
var fs = require("fs")
var crypto = require("crypto")
var rsa_key = fs.readFileSync('./priv/public.key').toString()
var rsa_priv = fs.readFileSync('./priv/private.key').toString()
var buffer = Buffer.from("Hello world")
var encrypted_auth = crypto.publicEncrypt({key: rsa_key}, buffer)
console.log("copy/paste this in iex: ", encrypted_auth.toString("Base64"))
var crypted_buffer = Buffer.from(encrypted_auth)
var decrypted_auth = crypto.privateDecrypt({key: rsa_priv, passphrase: "my_pass_phrase"}, crypted_buffer)
console.log("--- Res: ", decrypted_auth.toString())
但是只要你复制/粘贴在 Node 中生成的 Base64,我就得到了:
key = ExPublicKey.load!("./priv/private.key", "my_pass_phrase")
cipher = "PASTED BASE64 FROM NODE"
ExPublicKey.decrypt_private(cipher, key)
返回:error
我怀疑 rsa 填充不同,但似乎并非如此……有人知道吗?
【问题讨论】:
标签: node.js elixir rsa public-key