首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用Python -无效的base45字符串解码covid测试证书

用Python -无效的base45字符串解码covid测试证书
EN

Stack Overflow用户
提问于 2021-12-21 10:53:40
回答 1查看 607关注 0票数 1

谢谢你的帮助。

使用下面的示例脚本,我可以成功地解码一个(a) covid 疫苗接种条形码,并将json传递给我的应用程序(我已经用我的“绿色通行证”应用程序中的条形码对此进行了测试,这是可行的)。

然而,当我扫描一个(b)测试条形码(即抗基因测试,聚合酶链反应测试,.)从我们的地方当局并将字符串传递给脚本,相同的脚本返回"ValueError: base45字符串“.

当比较(a)疫苗接种base45代码和(b)测试base45代码时,在我的未受过训练的眼睛看来,两者都是合法的,但显然需要对(b)做一些其他的事情来使它成为有效的base45?

出于安全原因,我无法粘贴我的真实数据(敏感信息),所以也许可以帮助我找出为什么(b)不是base45而不查看整个字符串。所以你能帮我的唯一方法就是用条形码扫描器扫描你自己的(a)和(b),然后运行你通过我的脚本得到的两个字符串,或者你可能知道我们可以使用的任何公开可用的测试数据。太感谢了,伙计们!

代码语言:javascript
复制
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))

EN

回答 1

Stack Overflow用户

发布于 2021-12-22 07:45:54

每组数据都有一个前缀,在处理之前应该删除。请看一看规格,其中的编码过程有很好的解释。

前缀通常是HC1,并代表He居C证书版本1。也可能是HC2HC3HC200.所以,确保你理解未来的每一个版本。

在您的代码示例中,我可以读取注释# decode Base45 (remove HC1: prefix),但是这个前缀完全没有被decoded = base45.b45decode(payload)删除。

你应该有像payload = payload[4:] 如这篇博客文章所示这样的东西

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70434293

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档