У меня возникают проблемы при попытке расшифровать в Elixir (используя ExCrypto - который является единственной оболочкой для crypto и public_key), зашифрованный NodeJS Crypto.
Вот что работает:
- encrypt_public в NodeJS -> decrypt_private NodeJS (Работает)
- encrypt_public в Elixir -> decrypt_pricate в Elixir (Работает)
Но:
- encrypt_publicв NodeJS -> decrypt_private в Elixir (не работает)
Кажется, что encrypt_public от Node не может быть дешифрован decrypt_private в Elixir.Я даже пробовал трудный путь напрямую с модулем 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())
Но как только вы копируете / вставляете Base64генерируется в узле Вот что я получаю:
key = ExPublicKey.load!("./priv/private.key", "my_pass_phrase")
cipher = "PASTED BASE64 FROM NODE"
ExPublicKey.decrypt_private(cipher, key)
возвращает :error
Я подозревал, что отступы RSA отличаются, но, похоже, это не так ... У кого-нибудь естьподсказка?