Je suis capable de crypter des fichiers, mais lorsque j'essaie de les déchiffrer, je reçois un "fichier d'entrée de lecture d'erreur". J'utilise une paire de clés publique/privée pour crypter la phrase secrète utilisée pour crypter le fichier. C'est ainsi que seul le propriétaire de la clé privée est capable de déchiffrer le fichier.Ruby OpenSSL impossible de décrypter
Ma méthode de cryptage utilise le module OpenSSL Ruby et ressemble à:
file = params[:submission][:report].path
filename = params[:submission][:report].original_filename.gsub(" ", "_")
pubkey = OpenSSL::PKey::RSA.new File.read "#{Rails.root.to_s}/key/pubkey.pem"
cipher = OpenSSL::Cipher.new("aes-256-cbc")
cipher.encrypt
cipher.key = key = (0...50).map{ ('a'..'z').to_a[rand(26)] }.join
buf = ""
File.open("#{Rails.root.to_s}/evidence/#{filename}.enc", "wb") do |outf|
File.open(file, "rb") do |inf|
while inf.read(4096, buf)
outf << cipher.update(buf)
end
outf << cipher.final
end
end
encrypted_key = pubkey.public_encrypt key
File.open("#{Rails.root.to_s}/evidence/#{filename}_passphrase.bin", 'wb') {|f| f.write(encrypted_key) }
Je me sers OpenSSL dans un environnement Linux pour gérer le décryptage
openssl rsautl -in file_passphrase.bin -out passphrase.txt -inkey privkey.pem -decrypt
openssl enc -a -d -aes-256-cbc -in file.enc -out file.pdf -pass file:passphrase.txt
J'ai aussi essayé d'utiliser un sel , le chiffrer/décrypter le même que la phrase secrète, et j'obtiens la même erreur.
Qu'est-ce que je fais mal ici?
Merci