Я пытаюсь зашифровать файл, сохранить ключ / iv в файл, а затем восстановить ключ / iv из файла.
Почему-то после того, как я прочитал файл, данные изменились каким-то образом, что я не могу понять.
См. Ниже для MWE:
require 'openssl'
cipher = OpenSSL::Cipher.new('aes-256-gcm')
cipher.encrypt
original = cipher.random_key
File.open("foo", "w") {|f| f.write(original) }
readfromfile = File.read("foo")
if readfromfile != original
puts "The information has changed, but why?"
end
Я ожидаю, что данные не изменятся после того, как я прочитал их из файла, но ruby всегда возвращает их как разные.
Когда я печатаю оригинал и readfromfile, они всегда выглядят одинаково. Когда я сравниваю оригинал и кошку файла, они выглядят одинаково.
Класс данных оба возвращают строку.
Если я сохраню любую другую строку в файл и прочту ее обратно, она останется прежней.
Я получаю одинаковый результат, генерирую ли я ключ или iv.
Что происходит?
Вторичный вопрос: есть ли в ruby способ выполнить сравнение, которое возвращает в чем разница? Что-то вроде diff?