开放平台之敏感数据加密处理
敏感参数加密传输
根据目前国家个人信息保护法的最新要求,个人信息在使用的过程中我们需要采取相应的加密等安全技术措施来保障,如果正好您有这方面的需要,您可以对二要素参数进行加密传输
规则
目前仅支持idnumber和name的参数加密,也就是身份证号和姓名字段
目前仅支持一种加密算法:AES-256-CBC
参数加密步骤
- 对上述参数的值进行了AES-256-CBC加密操作,得到加密后的字符串
encrypted_str
;- 将开放平台分配的
API_KEY
作为key - 将开放平台分配的
API_SECRET
的前16位作为iv偏移量
- 将开放平台分配的
- 对
encrypted_str
进行Base64编码,编码规范:RFC 4648
- 在请求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练习生》