使用 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
我做错了什么,这不起作用?