实践要求: 1. 要求实现 RSA 的密钥生成、数据加密、数字签名。 2. 密钥生成包括生成两个大素数 p,q,计算 n=p×q 和(n)=(p-1)(q-1),然后选择与(n)互素且小于(n) 的整数 e,计算 d=e-1mod (n),最后得到公钥{e, n}和私钥{d, n}。要求 p,q 至少均大于 1010, 将生成的整 数 p、q、n、e、d 分别写入文件 p.txt、q.txt、n.txt、e.txt、d.txt 中。注意,所有整数都必须用 16 进制表 示。必须将整数转化成字符串后再写入文件,例如素数 p=6B1BCF(用 16 进制表示),则写入文件的应是 字符串"6B1BCF"而非整数 6B1BCF。 3. 数据加密是指用公钥{e, n}对指定的明文进行加密。数字签名是指用私钥{d, n}对指定的明文进行加 密。数据加密和数字签名都有一组对应的测试数据,以便检查程序的正确性。要求以命令行的形式,指 定明文文件、密钥文件的位置和名称以及加密完成后密文文件的位置和名称。加密时先分别从指定的明 文文件、密钥文件中读取有关信息,然后进行加密,最后将密文写入指定的密文文件。注意,密文(一个 整数)必须用 16 进制表示。必须将密文(一个整数)转化成字符串后再写入文件,例如密文 c=154A6B(用 16 进制表示),则写入文件的应是字符串"154A6B"而非整数 154A6B。
1