我使用danpal / attr_encryptor gem来加密我的ActiveRecord模型中的某些属性。
attr_encrypted :number, :charset => 'UTF-8', :key => 'vasya pupkin'
并出现以下错误
OpenSSL::Cipher::CipherError: bad decrypt
然后我尝试在rails控制台中使用encrypt_number,并在重新启动控制台时看到相同值'number'字段的不同值。为什么呢?
rails c
CreditCard.encrypt_number('hello')
"tRO0BETHrh5J3gXv8WVntw==\n"
quit
rails c
CreditCard.encrypt_number('hello')
"kJSbe30RQyR+gy3oDXv5ZA==\n"
答案 0 :(得分:0)
如果解密错误,您是否在数据库中创建了encrypted_number_iv
和encrypted_number_salt
列,并且是自动填充它们的宝石?
对于encrypt_number
,您需要传递:iv
和:salt
个选项(每次都相同)才能在输出中接收相同的密文。