Как мне расшифровать файлы, которые зашифрованы с помощью команды des в Ruby? - PullRequest
1 голос
/ 24 июня 2019

Мне нужно расшифровать файлы, зашифрованные с помощью этой команды:

des -E -u -k "some key" file.in file.out.enc

Код расшифровки в Ruby:

def decrypt(key)
  cipher = OpenSSL::Cipher.new(‘des’).decrypt
  cipher.key = key

  File.open(‘file.out’, ‘wb’) do |outf|
    decrypted = cipher.update(File.read(‘file.in.enc’)) + cipher.final
    outf.write(decrypted)
  end
end

Я получаю неправильную ошибку окончательной длины блока, когда запускаю приведенный выше код. Я также попытался расшифровать с помощью инструмента командной строки openssl и получил ошибку с магическим числом. Любой совет?

1 Ответ

1 голос
/ 24 июня 2019

Попробуйте переключить режим с CBC на ECB, например, с помощью OpenSSL::Cipher.new('DES-ECB').

Если вы посмотрите, какие шифры поддерживает ваша установка Ruby, просмотрев OpenSSL::Cipher.ciphers, вы также найдете список доступных режимов.

...