2009-11-16 2 views
0

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

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

Выход из МРТ:

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, которые необходимо выполнить, чтобы заставить это работать?

ответ

1

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

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

Не было возможности исследовать дальше

 Смежные вопросы

  • Нет связанных вопросов^_^