AFAIK, гем aes
оборачивает стандартную библиотеку openssl
Ruby, чтобы обеспечить гораздо более упрощенный интерфейс.Он поддерживает только aes-256-cbc
, то есть 256-битный AES с цепочкой блоков шифрования.Вы, вероятно, добавили бы методы шифрования / дешифрования в свои модели в Rails.
Базовый порядок операций шифрования будет следующим:
- вычисление ключа симметричного шифрования AES, 256 бит
- опционально вычисляет вектор инициализации для использования с
aes-256-cbc
(гем aes
может сделать это за вас, так что вы можете пропустить этот шаг) - зашифровать ваше сообщение, дополнительно указав вывод
:format
(Base64 по умолчанию, в противном случае обычные байтовые строки Ruby) и / или вектор инициализации :iv
Это будет:
key = AES.key
=> "6476b3f5ec6dcaddb637e9c9654aa687" # key ends up as a 32-char long hex string
iv = AES.iv(:base_64)
=> "PPDRCMsZhumCdEO1Zm05uw=="
enc64 = AES.encrypt("hello, secret world", key, {:iv => iv})
=> "PPDRCMsZhumCdEO1Zm05uw==$b3CCy/1dAMJ2JG5T50igEMGtvo9Ppkla1c9vrKbo+zQ="
# note that the encrypted result is the :iv
# and Base64-transformed encrypted message
# concatenated with $
Затем вы расшифруете enc64
путем передачи всей :iv
+ $
+ зашифрованной строки сообщения, а также 256-битной AES key
.
AES.decrypt(enc64, key)
=> "hello, secret world"
Имея некоторый опыт использования стандартной библиотеки openssl
вРуби, я могу сказать тебе, что документация на английском языке немногочисленна, в то время как японская документация очень хорошая.В любом случае, использование openssl
API в лучшем случае сбивает с толку, так что если вы не возражаете ограничиться aes-256-cbc
, тогда этот драгоценный камень aes
выглядит очень полезным.
Имейте в виду, у автора есть предостережение относительно скорости.Если вы обнаружите, что вам требуется более быстрое решение, вы должны взглянуть на FastAES
.Однако FastAES
является расширением C и требует компилятора для вашей целевой платформы.