我能夠加密文件,但是當我嘗試解密它們時,出現「讀取輸入文件時出錯」。我正在使用公鑰/私鑰對來加密用於加密文件的密碼短語。這樣只有私鑰的所有者才能解密該文件。Ruby OpenSSL無法解密
我的加密方法是使用紅寶石OpenSSL的模塊,看起來像:
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) }
然後我使用OpenSSL的Linux環境處理解密
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
我還使用鹽嘗試,加密/解密它與密碼相同,並且我得到相同的錯誤。
我在這裏做錯了什麼?
謝謝