L02 SM2 签名与公钥匹配

预计用时：25 分钟
关联考点：2025 决赛运维实操第 7 题（8 分）

背景
某系统用 SM2 签名，数据格式：M 为字符串、e 为消息杂凑值、r+s 为签名值。
开发人员对 SM2 理解有误，签名时直接对数据本身签名而非杂凑值。现获取到 5 条签名与 4 个公钥。

任务
1. 回答序号 1~4 的签名分别是用哪个公钥签的，格式：1-x、2-x、3-x、4-x
2. 第 5 条签名对应哪个公钥？为什么用“消息本身”验不过，而用 e 字段能验过？
3. 用一句话说明：规范的 SM2 签名里 e 是怎么来的？ZA 里包含哪些内容？

建议步骤
读 README.txt → 运行 python3 match.py → 观察每条签名哪一列为 True → 写答案 → 回答概念问题。

附件
README.txt  public_keys.json  signatures.json  gm.py（教学用 SM2/SM3 实现）  match.py

通用环境：Python 3.10+ 标准库即可；Windows 用 py -3，Linux/macOS 用 python3。所有数据均为教学构造，不对应真实人员和系统。
