首页 > 解决方案 > attr_encrypted gem在rails 6中不起作用

问题描述

我在用户模型中的 rails 4.1 中使用 attr_encrypted (1.3.3) 具有以下详细信息

attr_encrypted :email, :key => 'some_key'

将应用程序升级到 rails 6 后,attr_encrypted 撞到了使用加密器的 attr_encrypted (3.1.0) (~> 3.0.0)

在加密器 (~> 3.0.0) 中引入了新的验证

raise ArgumentError.new("key must be #{cipher.key_len} bytes or longer") if options[:key].bytesize < cipher.key_len

我现有密钥的哪个raises ArgumentError (key must be 32 bytes or longer)例外

如何在不破坏用户功能的情况下使用 rails 6 attr_encrypted gem?

标签: rubyruby-on-rails-4ruby-on-rails-5attr-encrypted

解决方案


要在 attr-encrypted gem 应用程序中使用旧行为,您必须使用更多参数

前:

attr_encrypted :email, :key => 'some_key'

现在:

attr_encrypted :email, key: 'some_key', algorithm: 'aes-256-cbc', mode: :single_iv_and_salt, insecure_mode: true

如果您的密钥少于 32 个字节

insecure_mode: true

将允许您使用较短的密钥。


推荐阅读