我在用户模型的rails 4.1中使用attr_encrypted(1.3.3(,详细信息如下
attr_encrypted :email, :key => 'some_key'
在将应用程序升级到rails 6之后,attr_encrypted被提升为attr_encCrypted(3.1.0(,后者使用加密器(~>3.0(
在加密机中(~>3.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属性加密的gem?
要在attr加密的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
将允许您使用较短的密钥。
这是这个gem 2.0版本中的一个突破性变化。默认算法现在是"aes-256-gcm"。此处提供更多详细信息https://github.com/attr-encrypted/attr_encrypted#the-算法选项