ruby-on-rails 活动记录加密字段的含义(p、h、iv、at、k、p、h、iv、at、e)

irtuqstp  于 2024-01-09  发布在  Ruby
关注(0)|答案(1)|浏览(120)

假设我用密钥correct加密了一个字段,我得到:

=> {"p"=>"dIc=",
 "h"=>
  {"iv"=>"PrL87KzAKv7ZataS",
   "at"=>"w9oq5XX+l2qYCWG5Ce4QIQ==",
   "k"=>
    {"p"=>"N8zOKHTloKk92d20y1pPthX2DSdooPdhgQvrnDtfBME=",
     "h"=>
      {"iv"=>"NqNkA4i76VNPjIPf",
       "at"=>"BGFek3jhD4dEf5hmIpxoBA==",
       "e"=>"QVNDSUktOEJJVA=="}}}}

字符串
这些字段是什么意思?我怎么知道哪个密钥被用来加密字段?
这里是从base64解码的:

=> {"p"=>"t\x87",
 "h"=>
  {"iv"=>">\xB2\xFC\xEC\xAC\xC0*\xFE\xD9j\xD6\x92",
   "at"=>"\xC3\xDA*\xE5u\xFE\x97j\x98\ta\xB9\t\xEE\x10!",
   "k"=>
    {"p"=>"7\xCC\xCE(t\xE5\xA0\xA9=\xD9\xDD\xB4\xCBZO\xB6\x15\xF6\r'h\xA0\xF7a\x81\v\xEB\x9C;_\x04\xC1",
     "h"=>{"iv"=>"6\xA3d\x03\x88\xBB\xE9SO\x8C\x83\xDF", "at"=>"\x04a^\x93x\xE1\x0F\x87D\x7F\x98f\"\x9Ch\x04", "e"=>"ASCII-8BIT"}}}}


所以我猜e是编码

mm9b1k5b

mm9b1k5b1#

所以p是payload,h是header。下面是默认header的Map:

irb(main):005> ActiveRecord::Encryption::Properties::DEFAULT_PROPERTIES
=> {:encrypted_data_key=>"k", :encrypted_data_key_id=>"i", :compressed=>"c", :iv=>"iv", :auth_tag=>"at", :encoding=>"e"}

字符串

相关问题