我使用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"
如果出现错误的解密错误,您是否在数据库中创建了encrypted_number_iv
和encrypted_number_salt
列,gem是否会自动为您填充它们?
在encrypt_number
的情况下,您需要传递:iv
和:salt
选项(每次都相同),以便在输出时接收相同的密文。