腾讯云人脸核身E证通获取实名信息指引_AI解决方案_同尘科技

人脸核身 1年前 (2023-06-29) 浏览 29

基于对个人隐私信息的保护,按照最小必要返回身份信息的要求,E证通服务不再返回姓名和身份证号的明文信息。如因业务需要返回,可以在 控制台 申请加密的形式返回。申请流程如下:

1. 申请实名信息返回

登录腾讯云 人脸核身控制台,单击自助接入E证通服务,在E证通服务列表右侧操作栏中单击申请返回身份信息
CA 证书申请表CSR(证书签名请求)文件上传到控制台,确认后单击提交进行申请。
CA 证书申请表参考 模板 进行填写,并上传控制台。注意三联申请表及办理人身份证、营业执照复印件需要加盖单位公章。CSR(证书签名请求)文件制作操作步骤参考如下步骤2。

2. 制作 CSR 文件

2.1 安装国密 SSL注意 目前该工具安装暂不支持 MAC M1 处理器。提供两种下载方式:git 下载,需要先安装 git 工具。

# 拉取源码git clone -b GmSSL-v2 https://github.com/guanzhi/GmSSL.git# 进入目录cd GmSSL

链接下载。

# 下载源码包wget https://github.com/guanzhi/GmSSL/archive/refs/heads/GmSSL-v2.zip# 解压文件unzip GmSSL-v2.zip # 进入目录cd GmSSL-GmSSL-v2

下载方式任选一种,成功执行后,已经进入相应文件夹内,然后执行下方操作:

# 如果 MAC 机器,执行,Linux 环境机器跳过该步骤直接编译即可sed -i '' 's%qw/glob%qw/:glob%g'  Configuresed -i '' 's%qw/glob%qw/:glob%g'  test/build.info# 编译./config# 安装(如果有旧版本,可以使用 make uninstall 卸载,然后删除对应文件)makesudo make install# 安装成功后,查看安装信息gmssl version -a

2. 2 生成公私钥对

gmssl ecparam -genkey -name sm2p256v1 -out CAkey.pem

2.3 查看并保留私钥

gmssl pkey -in CAkey.pem -noout -text


2.4 创建证书请求

gmssl req -utf8 -new -sm3 -key CAkey.pem -out CAcsr.pem


2.5 查看证书请求

gmssl req -in CAcsr.pem -noout -text -subject

至此,证书请求制作完成,请将 CAcsr.pem 文件上传 控制台,数据解密需要使用CAkey.pem(私钥),请自行妥善保存,否则将无法完成解密

3. 解密流程

在拉到核身结果后,EidInfo 中会有 DesKey 和 UserInfo,需要使用上面生成私钥解密。解密过程如下:使用 SM2 和上面生成的私钥对 DesKey(Base64 decode 成字节数组)解密获得“会话密钥”。使用会话密钥和sm4算法 ecb 模式(无填充)解密获得明文字符串。字符串格式为{“name”:”姓名”,”idtype”:”01(代表身份证)”,”idnum”:”身份证号”}。

3.1 Demo 代码

GO 代码示例:

// require github.com/tjfoc/gmsm v1.4.1    或者go get github.com/tjfoc/gmsm
import( "github.com/tjfoc/gmsm/sm2" "github.com/tjfoc/gmsm/sm4" "github.com/tjfoc/gmsm/x509" )
const privateKey = "f9b587743f051b1e59efa05125f31b5bf371957bf3d3012c1739091334b73738"const DesKey = "xxx"const UserInfo = "xxx"
func decode() { pb, err := x509.ReadPrivateKeyFromHex(privateKey) //上述私钥16进制 fmt.Println(pb, err) dek, err := base64.StdEncoding.DecodeString(DesKey) sessionKey, err := sm2.Decrypt(pb, dek, 0) info, _ := base64.StdEncoding.DecodeString(UserInfo) out, err := sm4.Sm4Ecb(sessionKey, info, false) fmt.Println(string(out), err)}

Java 代码示例:

   org.bouncycastle   bcprov-jdk15to18   1.69   cn.hutool   hutool-all   5.7.15 
// hutool-all 工具类使用最新版本即可。// bouncycastle 请使用与当前JDK相对应的版本。
private static final String PrivateKeyHex = "f9b587743f051b1e59efa05125f31b5bf371957bf3d3012c1739091334b73738"; private static final String DesKey = "xxx"; private static final String UserInfo = "xxx";
public void DecodeUserInfo() { byte[] desKeyBytes = Base64.decode(DesKey); final SM2 sm2 = new SM2(PrivateKeyHex, null, null); sm2.usePlainEncoding();
byte[] sm4KeyBytes = sm2.decrypt(desKeyBytes);
SymmetricCrypto sm4 = SmUtil.sm4(sm4KeyBytes);
byte[] plaintext = sm4.decrypt(Base64.decode(UserInfo)); System.out.println(new String(plaintext)); }



对解决方案有疑惑?想了解解决方案收费? 联系解决方案专家

腾讯云限时活动1折起,即将结束: 马上收藏

同尘科技为腾讯云授权服务中心,购买腾讯云享受折上折,更有现金返利:同意关联,立享优惠

阿里云解决方案也看看?: 点击对比阿里云的解决方案

- 0人点赞 -

发表点评 (0条)

not found

暂无评论,你要说点什么吗?