Подтвердить что ты не робот

Шифрование, дешифрование с использованием Rails

Недавно я видел возможность расшифровать и зашифровать строки в рельсах, не включая любую библиотеку, но я не могу найти сообщение в блоге.

Я хочу иметь возможность шифровать и расшифровывать строки, не включая ничего. Использование того же ключа для всего остального в рельсах, например, подписанных файлов cookie.

Любые идеи?

4b9b3361

Ответ 1

Вы имеете в виду это: ActiveSupport:: MessageEncryptor. Ниже приведен способ повторного использования секретности приложений Rails 4:

crypt = ActiveSupport::MessageEncryptor.new(Rails.application.secrets.secret_key_base)
encrypted_data = crypt.encrypt_and_sign('my confidental data')

И зашифрованные данные могут быть дешифрованы с помощью:

decrypted_back = crypt.decrypt_and_verify(encrypted_data)

Ранее Rails 3 использовал параметр конфигурации secret_token, а методы шифрования были encrypt decrypt.

Ответ 2

Rails 5 требует, чтобы ключ был 32 байта.

Изменить на Rails 4 ответ, который работает для Rails 5:

 key = SecureRandom.random_bytes(32)
 crypt = ActiveSupport::MessageEncryptor.new(key) 
 encrypted_data = crypt.encrypt_and_sign('my confidental data')

Расшифровать:

 decrypted_back = crypt.decrypt_and_verify(encrypted_data)

Ответ 3

Если вы хотите использовать тот же ключ, который может сохраняться на любом запросе/ответе, вы можете использовать следующий подход к настройке.

//данные, которые вы хотите шифровать и флаг true для шифрования, и false для дешифрования

def data_encryption(data, flag)  
    data = data.to_s
    key = "any string" (32 alphanumeric string length is preferred)
    if flag
     return Base64.encode64(data) + key
    else
      data = data.sub(key, '')
     return Base64.decode64(data)  
    end
end