实验概述
实验目的
ElGamal 公钥密码算法是在密码协议中有着重要应用的一类公钥密码算法,其安全性是基于有限域上离散对数学问题的难解性。 ElGamal 既能用于加密也能用于数字签名,本次实验我们只做数字签名部分。
通过本次实验期望能够到达如下几个目的。
-
了解数字签名的过程(签名过程和认证过程)
-
掌握 ElGamal 算法的密钥生成过程
-
掌握 ElGamal 数字签名方案
实验内容
本次实验需要大家完成 ElGamal 数字签名算法,推荐大家用 Java 或者 Python 实现,签名的信息 m 是你的学号, 需要随机生成两次不同的 k 进行签名并验证签名,并且验证假设消息 m 在传送过程中被篡改的情况。
- 需要将公钥(p, g, y)和私钥 x 以及每次使用的随机数 k 打印输出。
- 用学号作为消息 m ,并打印输出随机生成两次不同的 k 的签名信息和签名验证的结果。
- 验证签名时,假设消息 m 被篡改的情况,要输出验证签名不通过的信息。
- Hash 算法使用 SHA256 对消息 m 进行 Hash 运算。