学历验证自动化:Node.js + 天远API 实现安全学历信息查询(含AES加密)

50 阅读3分钟

一、学历查询api的必要性

互联网招聘平台消费金融风控引擎在线教育认证系统政务一网通办平台以及企业人力资源管理系统中,高效、可信的学历信息核验已成为数字化身份验证不可或缺的一环。天远API推出的“学历信息查询API”(接口代码:IVYZ9A2B),通过姓名与身份证号即可实时获取用户完整的高等教育学历履历,包括学历等级、学校类别、学习方式、入学/毕业年月及所学专业,并支持多段学历经历的时序展示。

本文面向 Node.js 开发者,全面解析该 API 的安全调用机制,提供基于原生 crypto 模块的加解密实现方案,并附带完整错误处理逻辑。借助天远API提供的标准化服务,开发者可在 Express、NestJS 或 Serverless 架构中快速嵌入学历验证能力,有效防范简历造假,提升业务合规性与用户体验。

二、API接口调用示例

调用说明

  • 端点https://apitest.tianyuanapi.com/api/v1/IVYZ9A2B?t=<13位毫秒时间戳>
  • HeaderAccess-Id: YOUR_ACCESS_ID
  • Body{ "data": "Base64(AES-CBC(明文))" }
  • 加密细节:AES-128-CBC,PKCS7 填充,IV 随机生成并前置

curl 示例(同上,略)

Node.js 完整示例

const crypto = require('crypto');
const axios = require('axios');

// 配置凭证(请替换为实际值)
const ACCESS_ID = 'your_access_id';
const ACCESS_KEY_HEX = 'a1b2c3d4e5f67890a1b2c3d4e5f67890'; // 32字符十六进制

// 十六进制转 Buffer
function hexToBuffer(hex) {
  return Buffer.from(hex, 'hex');
}

// AES-128-CBC 加密(PKCS7 自动填充)
function encryptData(plainText, hexKey) {
  const key = hexToBuffer(hexKey);
  const iv = crypto.randomBytes(16);
  const cipher = crypto.createCipheriv('aes-128-cbc', key, iv);
  const encrypted = Buffer.concat([cipher.update(plainText, 'utf8'), cipher.final()]);
  return Buffer.concat([iv, encrypted]).toString('base64');
}

// 解密
function decryptData(base64Data, hexKey) {
  const buffer = Buffer.from(base64Data, 'base64');
  const iv = buffer.subarray(0, 16);
  const ciphertext = buffer.subarray(16);
  const key = hexToBuffer(hexKey);
  const decipher = crypto.createDecipheriv('aes-128-cbc', key, iv);
  return Buffer.concat([decipher.update(ciphertext), decipher.final()]).toString('utf8');
}

// 主调用函数
async function queryEducation(name, idCard) {
  const url = `https://apitest.tianyuanapi.com/api/v1/IVYZ9A2B?t=${Date.now()}`;
  const payload = JSON.stringify({ name, id_card: idCard });

  let encryptedData;
  try {
    encryptedData = encryptData(payload, ACCESS_KEY_HEX);
  } catch (err) {
    console.error('[加密失败]', err.message);
    return null;
  }

  const headers = {
    'Access-Id': ACCESS_ID,
    'Content-Type': 'application/json'
  };

  try {
    const { data: resp } = await axios.post(url, { data: encryptedData }, { headers });

    if (resp.err_code !== '200') {
      console.error('[API错误]', resp.err_msg);
      return null;
    }

    const decrypted = decryptData(resp.data, ACCESS_KEY_HEX);
    return JSON.parse(decrypted);
  } catch (err) {
    console.error('[请求/解密失败]', err.message);
    return null;
  }
}

// 使用示例
(async () => {
  const result = await queryEducation('张三', '110101199001011234');
  if (result) {
    console.log('✅ 学历查询成功:', JSON.stringify(result, null, 2));
  }
})();

💡 仅需 axios,加密使用 Node.js 内置 crypto,无需额外依赖。

三、核心数据结构解析

天远API 的响应设计兼顾安全性与结构化。外层响应包含 err_code(200 表示通信成功)和加密的 data 字段;解密后得到真正的业务对象,其结构如下:

  • 根级 data 对象包含 query_id(唯一流水号)和 education_background
  • education_background 是学历信息的核心容器,内含状态码 code(如 "9100")、描述 msg 和学历数组 data
  • 学历数组中的每项代表一个独立的学历阶段,字段扁平,无嵌套,便于前端渲染或后端分析。

特别注意:时间字段 ksrq(入学)和 jsrq(毕业)采用 YYMM 字符串格式(如 "2206" 表示 2022年6月),在业务逻辑中需转换为标准日期对象以支持时间计算或可视化。

四、字段详解

全局响应字段

字段名含义说明
err_code接口调用状态"200" 成功,其他为网络/鉴权错误
err_msg错误描述如 "缺少Access-Id"
data加密业务载荷需解密后使用

业务数据字段(解密后)

字段名含义说明
query_id查询唯一ID用于日志追踪与对账
education_background.code业务结果码"9100"=有数据,"1000"=无记录
education_background.msg业务消息中文提示,如“查询成功有结果”
education_background.data学历列表数组,可能为空

学历记录字段

字段名含义说明
xl学历等级如“大学本科”、“博士研究生”
xxlx院校类别如“普通高校”,部分为“其他”
xxxs学习方式如“普通全日制”、“函授”
ksrq入学年月YYMM 格式(字符串)
jsrq毕业年月YYMM 格式(字符串)
zymc专业名称如“软件工程”,部分为“其他”

五、应用价值分析

1. 典型应用场景

  • 招聘平台:在用户投递简历时自动验证学历,降低HR筛选成本。
  • 信贷APP:将学历作为授信辅助依据,提升反欺诈能力。
  • 在线教育:学员报名高阶课程时验证前置学历资格。

2. 数据价值挖掘

  • 利用 ksrqjsrq 计算学习周期,识别“速成学历”风险。
  • 结合 xlxxxs 构建用户教育背景标签,用于个性化推荐。

3. 集成建议

  • 在 Express 中间件中封装调用逻辑,统一处理加解密与错误。
  • 使用 Redis 缓存查询结果(Key: ${id_card}_${name}),避免重复调用。
  • 记录 query_id 与用户行为日志关联,满足审计要求。

通过天远API,Node.js 应用可轻松获得权威学历数据,构建更智能、更安全的业务流程。

六、总结

本文完整演示了如何在 Node.js 环境中调用学历信息查询API(IVYZ9A2B) ,从请求加密、HTTP 调用到响应解密,提供了开箱即用的代码模板。该接口由天远API提供,具备高安全性、高准确性和无调用频率限制等优势,是构建现代身份核验系统的重要工具。

建议开发者将加解密逻辑封装为独立模块,并结合业务场景设计缓存与重试策略。随着数字身份体系的发展,学历验证将成为更多创新应用的基础能力。