我在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?
这是在2.0版本的gem中的一个突破性变化。默认算法现在是 "AES-256-GCM"。更多细节在这里 https:/github.comattr-encryptedattr_encrypted#the-algorithm-option。
要在应用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
将允许你使用较短的键。