attr_encrypted gem在rails 6中无法使用。

问题描述 投票:0回答:1

我在rails 4.1中的用户模型中使用了attr_encrypted (1.3.3),详情如下。

attr_encrypted :email, :key => 'some_key'

在将应用程序升级到rails 6后,attr_encrypted升级到了attr_encrypted (3.1.0),它使用了encryptor (~> 3.0.0)。

在 encryptor (~> 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?

ruby ruby-on-rails-4 ruby-on-rails-5 attr-encrypted
1个回答
1
投票

这是在2.0版本的gem中的一个突破性变化。默认算法现在是 "AES-256-GCM"。更多细节在这里 https:/github.comattr-encryptedattr_encrypted#the-algorithm-option。


1
投票

要在应用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

将允许你使用较短的键。

© www.soinside.com 2019 - 2024. All rights reserved.