Как можно читать файлы / текст, зашифрованные в AES 256 CB C по Ruby в Clojure - PullRequest
0 голосов
/ 13 февраля 2020

У нас есть JSON файлы, которые находятся в файловой системе нашей внутренней сети и записаны Ruby и прочитаны Clojure (а также Ruby). Мы хотели бы зашифровать их, чтобы повысить их безопасность. Мы использовали AES 256 CB C внутри нашего Ruby проекта для других вещей, которые требуют симметричного c шифрования, поэтому мы хотели бы использовать это. Однако на этот раз шифрование необходимо будет расшифровать в приложении Clojure. Вывод шифрования (используя это в качестве руководства: OpenSSL :: Cipher ), представленный в виде строки Ruby, выглядит следующим образом: "a \ x96 \ xECLI \ xBC% \ xC4 @ {\ xBD \ x99% \ xA1 \ x84 \ x84 "и помещение этого в Clojure REPL приводит к куче" Синтаксическая ошибка ... Неподдерживаемый escape-символ: \ x "Я пытался сделать каждый" \ "a" \\ ", но затем использовал Библиотека Clojure "Buddy-Core" и: aes256-cb c -hma c -sha512, так как алгоритм шифрования приводит к:

Execution error (AssertionError) at buddy.core.crypto/eval1558$fn (crypto.clj:478).
Assert failed: (keylength? key 64)

Даже если ключ / iv были точной длины при использовании для шифрования строки в Ruby.

Подводя итог:

  • Чтобы преобразовать строку Ruby в строку Clojure, правильно ли заменять все обратные косые черты двойными?
  • Является ли: aes256-cb c -hma c -sha512 правильным алгоритмом для использования с Buddy-Core Clojure для расшифровки AES 256 CB C?
  • Было бы лучше сделать это в Java внутри Clojure? (дополнительный вопрос: пожалуйста, посоветуйте преобразовать Ruby строки в строки Java / Clojure)

Ответы [ 2 ]

0 голосов
/ 13 февраля 2020

Строка Ruby не является допустимой Java строкой (т. Е. \ X не является допустимым escape-символом). Здесь разрешены Java escape-символы: https://docs.oracle.com/javase/specs/jls/se13/html/jls-3.html#jls -EscapeSequence

Я не уверен, что Ruby строки по умолчанию являются Unicode, так что это немного сложно. Самый безопасный вариант - превратить ваш результат шифрования в BASE64 и использовать его.

0 голосов
/ 13 февраля 2020

Упс, неправильно прочитал вопрос!

Старайтесь избегать строк любой ценой при работе с необработанными двоичными данными

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...