#ruby-on-rails #ruby #activerecord #encryption #attr-encrypted
#ruby-on-rails #ruby #activerecord #шифрование #attr-encrypted
Вопрос:
для шифрования, которое я использую https://github.com/attr-encrypted/attr_encrypted моей активной записи для *** Пользовательской модели ***, которые имеют следующие атрибуты.
строка activation_hash строка сведений строка email строка imei строка пароля строка registration_id строка secure_hash строка
Я использовал эти атрибуты как
attr_encrypted_options.merge!(:prefix => 'android_', :suffix => '_sheild')
attr_encrypted :activation_hash, :key => Getter::encryption_key, :encode => true
attr_encrypted :active, :key => Getter::encryption_key, :encode => true
attr_encrypted :code, :key => Getter::encryption_key, :encode => true
attr_encrypted :details, :key => Getter::encryption_key, :encode => true
attr_encryptor :email, :key => "this is awais"
attr_encrypted :password, :key => Getter::encryption_key, :encode => true
attr_encrypted :registration_id, :key => Getter::encryption_key, :encode => true
attr_encrypted :secure_hash, :key => Getter::encryption_key, :encode => true
attr_encrypted :imei, :key => Getter::encryption_key, :encode => true
как упоминалось в вики attr_encrypted, но когда я сохраняю запись, пустая строка хранится в базах данных.
В Getter я добавил общий метод ключа шифрования..
module Getter
def self.encryption_key
keys = OpenSSL::Cipher::Cipher.new('aes-256-cbc').random_iv
return keys
end
end
Нужно ли мне добавлять миграцию с зашифрованными атрибутами, которые я добавил в пользовательскую модель..
Моя цель — зашифровать данные activerecord и сохранить эти поля в базах данных, и когда я извлекаю, я могу получить расшифрованную запись обратно, но на уровне БД эти записи недоступны.
Не могли бы вы сказать мне, что я делаю не так?? Нужно ли переключать gem??
Ваши предложения высоко ценятся
Комментарии:
1. Из документа : «По умолчанию зашифрованное имя атрибута encrypted_#{атрибут} (например, attr_encrypted :email создаст атрибут с именем encrypted_email). Итак, если вы храните зашифрованный атрибут в базе данных, вам нужно убедиться, что поле encrypted_#{attribute} существует в вашей таблице. » Есть ли у вас такие поля в вашей базе данных?
Ответ №1:
Согласно документации attr_encrypted:
По умолчанию зашифрованное имя атрибута encrypted_#{атрибут} (например, attr_encrypted :email создаст атрибут с именем encrypted_email). Итак, если вы храните зашифрованный атрибут в базе данных, вам нужно убедиться, что поле encrypted_#{attribute} существует в вашей таблице.
Похоже, вы не назвали свои поля в ожидаемом формате.
Комментарии:
1. Или вы можете переименовать их?
2. мне нужно добавить новые столбцы в пользовательскую таблицу.. ` encrypted_activation_hash encrypted_details encrypted_email encrypted_imei encrypted_password encrypted_registration_id ` Если у меня есть эти атрибуты, нужно ли мне создавать пользователя как user.encrypted_email=»бла-бла» или user.email= «бла-бла»
3. Я бы сказал, первый вариант. Редактировать: неважно. Я понятия не имею, вам придется попробовать.
4. как я могу добавить зашифрованные данные в эти поля?? нужно ли мне сохранять как user.encrypted_email?? Я сделал это, но пустое электронное письмо сохраняется в БД: (Можете ли вы помочь мне сделать это надлежащим образом
5. Я предполагаю, что: поскольку он используется как помощник attr_accessor, в коде вашего приложения rails вы должны использовать имя, указанное в качестве параметра рядом с вызовом attr_encrypted (поэтому просто «email» для encrypted_email), но при миграции укажите фактическое поле encrypted_email . Я предполагаю, что attr_encrypted решит это оттуда.