谢谢您的帮助。
使用以下示例脚本,我可以成功解码(a) covid VACCINATION条形码并将 json 传递给我的应用程序(我已经在我的“绿色通行证”应用程序中使用条形码对此进行了测试,并且可行)。
但是,当我从我们的地方当局扫描(b) TEST 条形码(即反基因测试、PCR 测试……)并将字符串传递给脚本时,相同的脚本返回“ValueError:无效的 base45 字符串”。
在比较 (a) 疫苗接种 base45 代码和 (b) 测试 base45 代码时,在我未经训练的眼睛看来,两者都是合法的,但显然需要对 (b) 进行其他操作以使其成为有效的 base45?
出于安全原因,我无法粘贴我的真实数据(敏感信息),所以也许你可以帮我弄清楚为什么 (b) 不是 base45而没有看到整个字符串。因此,您可以帮助我的唯一方法是,如果您使用条形码扫描仪扫描您自己的 (a) 和 (b),然后运行您通过我的脚本获得的两个字符串,或者您可能知道任何公开可用的测试数据我们可以合作。非常感谢,伙计们!!!
import json
import sys
import zlib
import base45
import cbor2
from cose.messages import CoseMessage
# payload = SEE COMMENTS
print("decoding payload: "+ payload)
# decode Base45 (remove HC1: prefix)
decoded = base45.b45decode(payload)
# decompress using zlib
decompressed = zlib.decompress(decoded)
# decode COSE message (no signature verification done)
cose = CoseMessage.decode(decompressed)
# decode the CBOR encoded payload and print as json
print(json.dumps(cbor2.loads(cose.payload), indent=2))