ruby - 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?
解决方案
要在 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
将允许您使用较短的密钥。
推荐阅读
- android-studio - 向现有 Android Studio 项目添加单元测试
- php - 使用表单和 PDO 插入多行
- android - AdMob 让应用卡在 onPause
- php - 未知目录后的 URL .htaccess Strip
- javascript - 在本机反应中获取 IOS 通知
- html - HTML 链接不可点击,似乎被覆盖
- google-apis-explorer - 我需要用于 Vision 的 google-apis-explorer 吗?
- android - make 和 mka 有什么区别?
- r - 对数据框进行子集化以排除与 NA 在同一行中的值
- actions-on-google - “打开”和“关闭”操作的特征和设备类型?