当前位置: 首页 > article >正文

开放平台之敏感数据加密处理

敏感参数加密传输

根据目前国家个人信息保护法的最新要求,个人信息在使用的过程中我们需要采取相应的加密等安全技术措施来保障,如果正好您有这方面的需要,您可以对二要素参数进行加密传输

规则

目前仅支持idnumbername的参数加密,也就是身份证号姓名字段
目前仅支持一种加密算法:AES-256-CBC

参数加密步骤

  1. 对上述参数的值进行了AES-256-CBC加密操作,得到加密后的字符串encrypted_str
    1. 将开放平台分配的API_KEY作为key
    2. 将开放平台分配的API_SECRET的前16位作为iv偏移量
  2. encrypted_str进行Base64编码,编码规范:RFC 4648
  3. 在请求Header参数中添加Encrypted,值为:true

下面以ruby代码举例:

class Example
   def request
      name = "李四" # 姓名
      id_number = "123456789912345678" # 身份证号

      api_key = "1ba72570d6ee47618c4114c5f6db4557" # 开放平台分配的API_KEY
      api_secret = "17c65863310d4a34b391c1a7178a247e" # 开放平台分配的API_SECRET

      uri = URI('请求URL')
      data = {
              "name": aes_256_cbc_encrypt(name, api_key, api_secret), # => pHo410+lumhbYvavFBnCsA==
              "idnumber": aes_256_cbc_encrypt(id_number, api_key, api_secret) # => XYde2/2HzLIviVU8WzP9lbh7RpjLiP2/EqjlzmqWmEk=
      }
      header = {
              "Encrypted": "true", # 表示启用参数加密
              "Authorization": "key=1ba72570d6ee47618c4114c5f6db4557,timestamp=1540539270,nonce=xxx,signature=xxx"
      }
      res = Net::HTTP.post(uri, data.to_json, header) # 发起请求
      puts res.body
   end

   def aes_256_cbc_encrypt(data, key, iv)
      cipher = OpenSSL::Cipher.new('aes-256-cbc')
      cipher.encrypt
      cipher.key = key # 将API_KEY作为key
      cipher.iv = iv[0..15] # 将API_SECRET的前16位作为iv偏移量
      result = cipher.update(data) + cipher.final
      Base64.strict_encode64(result)
   end
end

好了,今天的开放平台之敏感数据加密处理就完成了

欢迎大家点击下方的卡片,关注《coder练习生》


http://www.kler.cn/a/5040.html

相关文章:

  • 金融项目实战 02|接口测试分析、设计以及实现
  • 网络安全应急响应技术原理与应用
  • C++类的引入
  • 跟着逻辑先生学习FPGA-第八课 基于 I2C 协议的 EEPROM 驱动控制
  • 使用vue-pdf预览pdf和解决pdf电子签章显示问题
  • maven高级(day15)
  • JAVA反射机制知多少
  • 红黑树、B树以及B+树及应用
  • 劝退还是坚守?计算机视觉行业综述
  • QT开发笔记(AP3216C )
  • 【新2023Q2模拟题JAVA】华为OD机试 - 最少停车数
  • 【Spring6】资源操作:Resources
  • Hive 流量分析(含维度和不含维度计算)
  • 37.Flexbox简介
  • vue3与vue2的区别
  • 代码随想录算法训练营第四十二天 | 01背包问题,你该了解这些、01背包问题,你该了解这些 滚动数组、 416. 分割等和子集
  • Cron表达式
  • 搭建Vue3工程化
  • Dynamics 365 Customer Service入门
  • 基于springboot实现私人健身与教练预约管理系统【源码+论文】
  • Python量化交易08——利用Tushare获取日K数据
  • 异步流程控制 遍历篇filter
  • 【线程池的工作参数、什么情况下会触发最大线程数?什么情况下会回收线程?】
  • Java设计模式(十四)—— 模板方法模式
  • Mars3d项目启动上的一些坑
  • day2 操作系统考点