# 敏感数据加解密

# 描述

游云南开放平台会对提供敏感数据的接口进行加密处理,当前被列为敏感数据的接口有

  • 一码通
  • 用户手机号
  • 常用旅客信息

采用的加解密方式如下:

  1. 开放平台先采用rsa非对称加密的方式加密一个aes对称密钥,非对称密钥生成规则见下面RSA 公私钥对生成
  2. 开放平台会使用这个aes对称密钥加密开放能力数据,加密算法采用的是AES/CBC/PKCS5Padding
  3. 加密过的aes对称密钥会随开放能力数据一并返回,并同时返回初始向量iv字段
  4. 开发者解密时先用非对称密钥的私钥解密接口内的aes对称密钥
  5. 再使用aes对称密钥和初始向量iv解密数据密文

注意:

  1. 接口返回的密文数据,密文密钥,初始向量iv都经过base64 encode,只是iv未被加密
  2. 解密后的能力数据明文是JSON string

# 密钥的提供

  • rsa非对称密钥对由三方开发者生成,私钥由三方开发者保存(切记私钥不能外传),公钥提供到游云南开放平台保存;
  • 使用开放平台上传公钥【右上角账号-个人中心-公钥上传】;
  • aes对称密钥是由开放平台随机生成并随开放能力接口返回,开发者不需要自行管理。

# RSA 公私钥对生成

  • Linux 环境
  1. 使用openssl 命令生成 2048 长度的私钥1.openssl genrsa -out rsa_private_key.pem 2048 #转成pkcs8 格式 标准输出即使用到的私钥
  2. openssl pkcs8 -topk8 -nocrypt -inform PEM -in rsa_private_key.pem -outform PEM outform > pkcs8_rsa_private_key.pem
  3. 输出公钥 openssl rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem 三方服务保存私钥文件 pkcs8_rsa_private_key.pem,并将公钥文件 rsa_public_key.pem 连同三方服务其他配置信息邮件发送给游云南
  • Windows 环境
  1. 根据自己的系统位数,到网址 http://slproweb.com/products/Win32OpenSSL.html 下载相应版本的 OpenSSL 并安装,比如 64 位的系统,那么下载 Win64 OpenSSL v1.1.1 Light(EXE)版本,这里的 OpenSSL 版本根据实际情况一般下载最新的即可
  2. 安装完OpenSSL 后,命令行进入安装目录中的 bin 目录,执行 openssl.exe 3.生成私钥 输入"genrsa -out rsa_private_key.pem 2048",回车,在 bin 目录下会生成一个 rsa_private_key.pem 文件
  3. 生成公钥 输入"rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem",回车,在 bin 目录下会生成一个名为 rsa_public_key.pem 文件
  4. 把私钥转换成PKCS8 格式(必须) 输 入 "pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM -out pkcs8_rsa_private_key.pem - nocrypt" 回车,在bin 目录下会生成一个名为 pkcs8_rsa_private_key.pem 文件
  5. 三方服务保存私钥文件pkcs8_rsa_private_key.pem,并将公钥文件 rsa_public_key.pem 连同三方服务其他配置信息邮件发送给游云南
上次更新: 7/6/2021, 5:50:17 PM