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

  • Post author:
  • Post category:其他



目录


敏感参数加密传输


规则


参数加密步骤


下面以ruby代码举例:


敏感参数加密传输

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

规则

目前仅支持

idnumber



name

的参数加密,也就是

身份证号



姓名

字段

目前仅支持一种 加 密 算 法:

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练习生》



版权声明:本文为ybb_ymm原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。