ezcrypto не постоянно шифрует в JRuby - PullRequest
0 голосов
/ 17 ноября 2009

Я пытаюсь зашифровать некоторые данные, используя гем Ezcrypto в Ruby. Все работает отлично при работе под MRI, но я получаю странные результаты при запуске того же кода с использованием JRuby.

Выполнение следующего должно дать тот же вывод с повторным вызовом.

Вывод из МРТ:

irb(main):007:0> Base64.encode64(EzCrypto::Key.encrypt_with_password "password", "salt","Top secret should not be revealed")
=> "6KNkObMUfXzyPey+TOGFHbozsmj5bGYqKql2Qava7++j5Moz0Zi2MwRp/FEC\nkpqw\n"
irb(main):008:0> Base64.encode64(EzCrypto::Key.encrypt_with_password "password", "salt","Top secret should not be revealed")
=> "6KNkObMUfXzyPey+TOGFHbozsmj5bGYqKql2Qava7++j5Moz0Zi2MwRp/FEC\nkpqw\n"
irb(main):009:0> Base64.encode64(EzCrypto::Key.encrypt_with_password "password", "salt","Top secret should not be revealed")
=> "6KNkObMUfXzyPey+TOGFHbozsmj5bGYqKql2Qava7++j5Moz0Zi2MwRp/FEC\nkpqw\n"

Этот вывод можно довольно счастливо расшифровать.

От JRuby я получаю разные выходные данные при каждом вызове:

irb(main):020:0> Base64.encode64(EzCrypto::Key.encrypt_with_password "password", "salt","Top secret should not be revealed")
=> "oX5JKZVkDbpbnrizI2bxkLVfQVfxayBAa0RbG+sfa9OUP1epzAyR7eDf92Bf\nVAiK\n"
irb(main):021:0> Base64.encode64(EzCrypto::Key.encrypt_with_password "password", "salt","Top secret should not be revealed")
=> "mmyKTtn78Dv3eiH2AET1olTkHNPMhtbiXth68Lqoph1nKkYyQH6cSWws/KI5\nwza0\n"
irb(main):022:0> Base64.encode64(EzCrypto::Key.encrypt_with_password "password", "salt","Top secret should not be revealed")
=> "pzDxS0p0CyDCkEY+QVyQKdgP1Of2ZeiNE06InS70ndkHnPwYOFmlH3h+xKXd\nmx54\n"

Ни один из которых не может быть успешно расшифрован.

Есть ли какие-либо дополнительные шаги по настройке в JRuby, которые необходимо выполнить, чтобы заставить это работать?

Ответы [ 2 ]

1 голос
/ 10 декабря 2009

Выглядит как ошибка, которую вы должны зарегистрировать на http://jira.codehaus.org/browse/JRUBY.

1 голос
/ 17 ноября 2009

Закончилось просто кодированием того же самого с использованием OpenSSL напрямую. Мессье, но это работает.

У меня есть теория, что EzCrypto в JRuby регенерирует вектор инициализации случайным образом каждый раз, когда вызывается шифрование, без возможности его установки, поэтому каждый раз разные выходные данные.

У нас не было возможности продолжить расследование

...