首页 > 解决方案 > 使用 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

我做错了什么,这不起作用?

标签: ruby-on-railsrubyencryptionattr-encrypted

解决方案


推荐阅读