跳转至

实验概述

实验目的

ElGamal 公钥密码算法是在密码协议中有着重要应用的一类公钥密码算法,其安全性是基于有限域上离散对数学问题的难解性。 ElGamal 既能用于加密也能用于数字签名,本次实验我们只做数字签名部分。

通过本次实验期望能够到达如下几个目的。

  1. 了解数字签名的过程(签名过程和认证过程)

  2. 掌握 ElGamal 算法的密钥生成过程

  3. 掌握 ElGamal 数字签名方案

实验内容

本次实验需要大家完成 ElGamal 数字签名算法,推荐大家用 Java 或者 Python 实现,签名的信息 m 是你的学号, 需要随机生成两次不同的 k 进行签名并验证签名,并且验证假设消息 m 在传送过程中被篡改的情况。

  1. 需要将公钥(p, g, y)和私钥 x 以及每次使用的随机数 k 打印输出。
  2. 用学号作为消息 m ,并打印输出随机生成两次不同的 k 的签名信息和签名验证的结果。
  3. 验证签名时,假设消息 m 被篡改的情况,要输出验证签名不通过的信息。
  4. Hash 算法使用 SHA256 对消息 m 进行 Hash 运算。