好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > Rails實現字段加密存儲

Rails實現字段加密存儲

熱門標簽:開封百應電銷機器人聯系方式 樂昌電話機器人 邯鄲外呼調研線路 武漢呼叫中心外呼系統線路商 買了外呼系統不想用了怎么辦 真人語音電銷機器人系統 電話機器人電話卡封號怎么辦 北京語音電銷機器人價格 浦東上海400開頭的電話申請

方案

存儲前,加密后再存儲到數據庫
讀取后,利用 KEY 進行解密

實現

ActiveSupport::MessageEncryptor 是 Rails 基于 openssl 封裝實現的一個類,可用于對一個對象進行加密、解密操作。例如:

salt = SecureRandom.random_bytes(64)
key  = ActiveSupport::KeyGenerator.new('password').generate_key(salt) # => "\x89\xE0\x156\xAC..."
crypt = ActiveSupport::MessageEncryptor.new(key)            # => #ActiveSupport::MessageEncryptor ...>
encrypted_data = crypt.encrypt_and_sign('my secret data')       # => "NlFBTTMwOUV5UlA1QlNEN2xkY2d6eThYWWh..."
crypt.decrypt_and_verify(encrypted_data)                # => "my secret data"

serialize 是 Rails ActiveRecord 里的一個類方法,可用于執行一個 column 如何存儲到數據庫,以及從數據庫讀取出來后要如何處理,例如:

class User  ActiveRecord::Base
 serialize :preferences, Hash
end

user = User.new
user.preferences = {
 gender: 'male',
 age: 18
}
user.save!

另外,Rails 還允許自定義 Serizlizer,使得開發者能夠自行決定如何做進行序列化和反序列化。例如:

class CustomerSerializer
 def self.load(value)
  value.to_s.blank? ? "" : JSON.parse(value)
 end

 def self.dump(value)
  (value || {}).to_json
 end
end

class User  ActiveRecord::Base
 serialize :preferences, CustomerSerializer
end

基于此,我們可以自己實現一個 serializer,使得我們能夠進行對字段進行加密存儲,同時讀取出來時能夠自行進行解密。

class EncryptedStringSerializer
 def self.load(value)
  value.to_s.blank? ? '' : decrypt(value)
 end

 def self.dump(value)
  encrypt(value || '')
 end

 private

 def self.encrypt(value)
  encryptor.encrypt_and_sign(value)
 end

 def self.decrypt(value)
  encryptor.decrypt_and_verify(value)
 end

 def self.encryptor
  @encryptor ||= ActiveSupport::MessageEncryptor.new(Settings.message_encryptor_key)
 end
end

class UserAddress  ActiveRecord::Base
 serialize :phone, EncryptedStringSerializer
 serialize :first_name, EncryptedStringSerializer
 serialize :last_name, EncryptedStringSerializer
 serialize :country, EncryptedStringSerializer
 serialize :state, EncryptedStringSerializer
 serialize :city, EncryptedStringSerializer
 serialize :address1, EncryptedStringSerializer
 serialize :address2, EncryptedStringSerializer
 serialize :zipcode, EncryptedStringSerializer
end

可以改進的點

加解密用的 KEY 是否過于簡單?
針對現有數據,如何平滑過渡?

標簽:自貢 鄂州 河北 淄博 石嘴山 宜春 六安 松原

巨人網絡通訊聲明:本文標題《Rails實現字段加密存儲》,本文關鍵詞  Rails,實現,字段,加密,存儲,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Rails實現字段加密存儲》相關的同類信息!
  • 本頁收集關于Rails實現字段加密存儲的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 一夜强开两女花苞| 午夜福利乱码一区二区| 黑色丝袜美腿被狂躁长网站| 欧美黑人激情乱妇| 一级高清在线观看影片| 久久久久久97免费精品一级小说 | 美女胸又黄又???| 国产精品欧美久久久久天天影视| 屈辱沉沦堕落麻麻系列小说| 三级日本韩国理论在线| 免费很黄很暴力的视频| caoporen在线视频入口| 波多野结大战三个黑鬼| 白丝美女被羞羞视频| 久久久日韩欧美综合影院| 亚洲一区二区三区婷婷四叶草| 久久久精品2019中文字幕2020 | 年轻女教师4HD中字免费观看| 美国大尺度刺激床戏| 男男污视频| 免费观看午夜男女婬乱A片| 色欲AV精品一区二区三区古女| 亚洲欧美视频二区| 午夜寂寞成人国产全部排列表安卓 | 受被攻强迫怕到颤抖h| 男女啪啪激情视频| 边走边撞h| 日韩国产欧美一区二区三区在线 | 男女啪啪猛烈免费软件| 飘雪影视在线观看免费完整版中文| 富婆性婬乱A片AAAA片| 日本强伦姧护士在线播放老师| 精产国品一二三产品区别视频免费| 男生和女生差差差很痛| 挨肉的女侠破庙| 亚丝娜本子纯肉侵犯肉全彩无码| 19禁大尺度做爰无遮挡电影| 91免费网站在线看入口黄| 超污很黄很肉的电影在线观看| 国模大尺度99人体大尺度| 在线中文字幕亚洲|