ActiveSupport :: MessageEncryptor ключ должен быть 32 байта рельсы 6 - PullRequest
0 голосов
/ 11 декабря 2019

У меня есть проект 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 6, и этокод перестал работать, и у меня есть много зашифрованных данных, сохраненных в базе данных

как я могу заставить эту работу работать так, как она работала раньше, без необходимости перехода со старого шифрования на какое-то новое шифрование в рельсах, например

len   = ActiveSupport::MessageEncryptor.key_len
salt  = SecureRandom.random_bytes(len)
key   = ActiveSupport::KeyGenerator.new('password').generate_key(salt, len) 
crypt = ActiveSupport::MessageEncryptor.new(key)
encrypted_data = crypt.encrypt_and_sign('my secret data') 
crypt.decrypt_and_verify(encrypted_data)                   

Спасибо

...