0

我现在挣扎了一整周,未能满足 HERE 流量 api 的加密要求,确切地说是 TPEG API。

要做的步骤:

<?xml version="1.0" encoding="UTF-8" ?>
<get-messages>
  <locations>
     <loc lat="52.55121" lon="13.16565"/>    
  </locations>
</get-messages>

此 xml 正文必须加密,HERE API 记录如下:

加密和压缩所有流量信息请求:

  1. 使用 gzip 压缩 XML 正文。

  2. 计算 gzip 文件的字节长度。

  3. 将 gzipped 数据的长度作为一个 little endian 32 位整数添加到压缩正文中。

  4. 用零填充 gziped 内容和长度的组合,使其可被 16 个字节整除。

  5. 使用 AES 128,加密内容和长度的填充组合,如下所示: a) 创建一个 16 字节长的随机整数。b) AES 加密步骤 4 的结果,在 CBC 模式下,使用步骤 5.a 中生成的整数作为初始化向量和来自 InitSession 响应的密钥。不要应用额外的填充。

  6. 将生成的 AES 加密数据块作为 HTTP POST 请求发送,在步骤 5.a 中生成的整数作为内容类型 application/octet-stream 前置到 initsession 响应中的 URL

这么多东西在这里不清楚,gziped xml 的期望结果是什么?Base64?二进制?32 little endian int, binary 的类型是什么?

密钥长度为 32 个字符。由于 AES128 只适合 16 字节长的密钥,我假设密钥必须被解释为十六进制值。是否所有值都需要定义为十六进制值?

IV的类型是什么?十六进制?文本?二进制?加密结果的类型是什么?十六进制?二进制?文本?Base64?

http 标头必须包含 content_type appilcation/octet-stream。

4

0 回答 0