ActiveSupport :: MessageEncryptor密钥必须是32个字节的轨6

时间:2019-12-11 15:13:14

标签: ruby-on-rails encryption openssl ruby-on-rails-6

我有一个带有以下代码的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,此代码已停止工作,并且数据库中保存了许多加密数据

我如何才能像以前那样工作,而不必从旧的加密方式迁移到像Rails这样的新加密方式

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)                   

谢谢

0 个答案:

没有答案