【问题标题】:How can I display a CBOR Web Token encoded token in a legible manner?如何以清晰的方式显示 CBOR Web Token 编码的令牌?
【发布时间】:2021-07-04 18:20:09
【问题描述】:

我正在尝试使来自电晕疫苗接种的 QR 码的内容清晰易读。 找到以下页面。我只是不太明白如何读取扫描的字符串。

Link / Certification API

字符串:HC1:6BFOXN*TS0BI$ZD4N9:9S6RCVN5+O30K3/XIV0W23NTDEPWK G2EP4J0B3KLASMUG8GJL8LLG.3SA3/-2E%5VR5VVBJZILDBZ8D%JTQOL2009UVD0HX2JN*4CY009TX/9F/GZ%5U1MC82*%95HC2FCG2K80H-1GW$5IKKQJO0OPN484SI4UUIMI.J9WVHWVH+ZE/T9MX1HRIWQHCR2HL9EIAESHOP6OH6MN9*QHAO96Y2/*13A5-8E6V59I9BZK6:IR/S09T./0LWTHC0/P6HRTO$9KZ56DE/.QC$QUC0:GOODPUHLO$GAHLW 70SO:GOV636*2. KOKGKZGJMI:TU+MMPZ5OV1 V125VE-4RZ4E%5MK9BM57KPGX7K:7D-M1MO0Q2AQE:CA7ED6LF90I3DA+:E3OGJMSGX8+KL1FD*Y49+574MYKOE1MJ-69KKRB4AC8.C8HKK9NTYV4E1MZ3K1:HF.5E1MRB4WKP/HLIJL8JF8JF172M*8OEB2%7OREF:FO:7-WF11SKCU1MH8FWPVH%L635OBXTY*LPM6B9OBYSH:4Q1BQ:A5+I6:DQR9VKR8 BLHCFQMZA5:PHR14%GV4ZOP50$ A 3

显然这个字符串是由 CBOR Web Token 编码的。有谁知道我如何用例如解码它Java 还是 PHP?

【问题讨论】:

    标签: qr-code cbor


    【解决方案1】:
    1. base45_decode()
    2. zlib_decode()
    3. CBOR_decode() 到 headers1、headers2、cbor_data、签名
    4. CBOR_decode() cbor_data 到 greenpassdata
    5. JSON 将 greenpassdata 字符串化为 greenpass_json

    【讨论】:

    • 浏览器-javascript有类似的链吗?我在第 1 步和第 2 步得到了它,但在第 3 步和第 4 步找不到任何东西。
    【解决方案2】:

    除了大卫的回答,如果您还想验证签名,请通过其kid(base64 中的headers2[4])查找signing certificate,然后调用

    require("cose-js").sign.verify(
      <result from step 2>,
      <public key of signing certificate>
    )
    

    (即 Node.js,但可能有 Java 或 PHP 等价物)。

    【讨论】:

    • 没有 node.js 的替代方案?
    【解决方案3】:

    使用base45 解码器:

    composer require mhauri/base45
    

    你可以解码字符串:

    $base45 = new \Mhauri\Base45();
    $decoded = $base45->decode(preg_replace("/^[^\:]+:/", "", $encoded));
    

    请注意,我们忽略了前几​​个字符 HC1:,它们是健康证书版本 (1),不是 base45 编码字符串的一部分。你现在有了一个 zLib 压缩字符串。

    然后您可以使用内置的zilb_decode() 方法来解压字符串:

    $decompressed = zlib_decode($decoded);
    

    现在我们有了实际的 CBOR Web Token 字符串。下一步是将该字符串解析为一个数组。麻烦的是我只找到了两个开源的PHP CBOR包,都不适合这个任务。

    2tvenom/cborencode 包不支持标签(目前)。而且spomky-labs/cbor-php好像根本看不懂这个字符串,虽然是这么复杂的包,可能是我做错了什么。

    我确定一定有办法,只是我还没有找到。目前,我使用https://ehealth.vyncke.org/index.php 来了解有关CBOR 的更多信息。如果你想出办法,请分享!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-24
      • 1970-01-01
      • 2020-08-24
      • 2016-08-26
      • 2013-03-26
      相关资源
      最近更新 更多