ruby-on-rails - 使用 attr-encrypt gem 加密但无法解密
问题描述
使用 gem:https ://github.com/attr-encrypted/attr_encrypted
问题一:
当我创建记录并加密时,我转到控制台(通过 Heroku)并执行以下操作:
model = Model.find(1)
model.attribute
错误:OpenSSL::Cipher::CipherError ()
问题 2:
我创建记录,进行编辑,参数显示已解密(不确定它是否在控制台中不起作用,但确实如此)......
一旦我重新提交(git push heroku master)或重新启动heroku,编辑页面就会给我这个错误:ActionView::Template::Error ()
错误出现在 text_field 属性的行publishable key
我的设置:
架构:
t.string "encrypted_publishable_key"
t.string "encrypted_publishable_key_iv"
t.string "encrypted_secret_key"
t.string "encrypted_secret_key_iv"
t.index ["encrypted_publishable_key_iv"], name: "index_stripe_apis_on_encrypted_publishable_key_iv", unique: true
t.index ["encrypted_secret_key_iv"], name: "index_stripe_apis_on_encrypted_secret_key_iv", unique: true
尝试删除索引但仍然存在错误。
模型:
key = Base64.encode64(SecureRandom.random_bytes(32))
attr_encrypted :publishable_key, key: Base64.decode64(key)
attr_encrypted :secret_key, key: Base64.decode64(key)
还尝试过:
key = Base64.encode64(SecureRandom.random_bytes(32))
iv = Base64.encode64(SecureRandom.random_bytes(12))
attr_encrypted :publishable_key, key: Base64.decode64(key), iv: Base64.decode64(iv)
attr_encrypted :secret_key, key: Base64.decode64(key), iv: Base64.decode64(iv)
没有key = Base64.encode64(SecureRandom.random_bytes(32))
我得到错误“需要 32 个字节”。
使用上述内容,属性将保存,但在解密时,在视图和控制台中,我都会收到错误:
iv must be 12 bytes or longer
我做错了什么,这不起作用?
解决方案
推荐阅读
- ios - 在 Swift 中获取某一天的事件数量
- java - 更好的 Java 集合类型,可通过其字段中的任何 subsrting 快速搜索元素
- python - “ImportError: DLL load failed: The specified module could not be found”在进行对象检测时出现此错误
- elixir - GenServer的code_change在连续的代码热升级中即使vsn被固定到最新版本又被调用了?
- ceph - 为什么我的新 Ceph 集群状态从不显示“HEALTH_OK”?
- java - 受保护和包私有(无修饰符)构造函数之间的区别?
- php - 如何将上传的 php 文件显示为纯文本而不是在 wordpress 中执行?
- python-3.x - Python Flask 中的 unittest:打印消息被截断
- apache-spark-sql - 无法使用 sparkR 提交读取 Hive 表
- java - 在 maven 中创建和安装 de-lomboked 源 jar