1

我使用 danpal/attr_encryptor gem 来加密我的 ActiveRecord 模型中的某些属性。

attr_encrypted :number, :charset => 'UTF-8', :key => 'vasya pupkin'

并得到以下错误

OpenSSL::Cipher::CipherError: bad decrypt

然后我尝试在 rails 控制台中使用 encrypt_number 并在重新启动控制台时看到相同的“数字”字段值的不同值。为什么?

rails c
CreditCard.encrypt_number('hello')
"tRO0BETHrh5J3gXv8WVntw==\n"
quit
rails c
CreditCard.encrypt_number('hello')
"kJSbe30RQyR+gy3oDXv5ZA==\n"
4

1 回答 1

0

如果出现错误的解密错误,您是否在数据库中创建了列,并且 gem 是否会自动为您填充它们encrypted_number_ivencrypted_number_salt

在 的情况下encrypt_number,您需要传递:iv:salt选项(每次都相同)以在输出处接收相同的密文。

于 2013-07-17T05:21:26.003 回答