MIRACL(MultiprecisionIntegerandRationalArithmeticC/c++Library)是著名的密码算法库,设法去官网下载安装MIRACL,提交安装过程截图或过程文本(3分).
去github官网下载.zip文件

使用如下命令进行解压
c
unzip -j -aa -L MIRACL-master.zip
解压后的文件目录:
使用bash命令构建静态库
c
bash linux64
测试
c
./pk-demo

编译运行附件中MIRACL的测试代码,提交编译、运行过程截图或过程文本(5分).
测试内容:
使用MIRACL库来进行大数运算。以下是代码的具体功能。
- 初始化 MIRACL 系统,设置大数运算的环境。
- 声明并初始化三个大数变量 a、b 和 c。
- 对两个大数 a 和 b 进行加法运算,并将结果存储在 c 中。
- 输出加法结果。
c
#include <stdio.h>
#include "miracl.h"
int main() {
// 初始化 MIRACL
miracl *mip = mirsys(5000, 10); // 5000 是精度(位数),10 是进制
// 定义大整数
big a, b, sum, difference, product, quotient, remainder, result;
// 为大整数分配内存
a = mirvar(0);
b = mirvar(0);
sum = mirvar(0);
difference = mirvar(0);
product = mirvar(0);
quotient = mirvar(0);
remainder = mirvar(0);
result = mirvar(0);
// 将字符串转换为大整数
cinstr(a, "123456789012345678901234567890");
cinstr(b, "987654321098765432109876543210");
// 显示输入的数字
printf("a = ");
cotnum(a, stdout);
printf("b = ");
cotnum(b, stdout);
// 执行加法
add(a, b, sum);
printf("\n加法结果 = ");
cotnum(sum, stdout);
// 执行减法
subtract(b, a, difference);
printf("减法结果 = ");
cotnum(difference, stdout);
// 执行乘法
multiply(a, b, product);
printf("乘法结果 = ");
cotnum(product, stdout);
// 执行除法
divide(a, b, quotient);
printf("商 = ");
cotnum(quotient, stdout);
// 使用 modulo 计算余数
divide(a, b, product);
printf("余数 = ");
cotnum(product, stdout);
// 执行乘方运算 (a^2) 使用乘方函数
powmod(a, mirvar(2), b, result); // 假设'b'为模数的简单幂模运算
printf("乘方结果 (a^2 mod b) = ");
cotnum(result, stdout);
// 清理
mirexit(); // 清理 MIRACL
return 0;
}
运行结果
研究MIRACL,在testmiracl.c添加至少一项你的学习成果,提交代码,编译运行过程截图或过程文本(5分).
MIRACL 库的功能
MIRACL(Multiprecision Integer and Rational Arithmetic C/C++ Library) 是一个用于高性能密码学和数学计算的库,主要功能包括:
- 大数运算
支持任意精度的整数和有理数运算。
提供加法、减法、乘法、除法、模运算、幂运算等基本操作。 - 数论计算
素数检测(如 Miller-Rabin 测试)。
最大公约数(GCD)、最小公倍数(LCM)、模逆等计算。 - 椭圆曲线密码学(ECC)
支持椭圆曲线上的点运算(如点加、点乘)。
提供椭圆曲线数字签名算法(ECDSA)等。 - 公钥密码学
支持 RSA、Diffie-Hellman 等公钥加密算法。
提供大数的快速幂运算和模运算。 - 随机数生成
提供密码学安全的伪随机数生成器。 - 其他功能
多项式运算、矩阵运算、有限域运算等。
举例:
MIRACL 库的大数加法和乘法功能
c
#include <stdio.h>
#include "miracl.h"
int main() {
// 初始化 MIRACL
miracl *mip = mirsys(5000, 10); // 5000 是精度(位数),10 是进制
// 定义大整数
big a, b, sum, difference, product, quotient, remainder, result, gcd;
// 为大整数分配内存
a = mirvar(0);
b = mirvar(0);
sum = mirvar(0);
difference = mirvar(0);
product = mirvar(0);
quotient = mirvar(0);
remainder = mirvar(0);
result = mirvar(0);
gcd = mirvar(0);
// 将字符串转换为大整数
cinstr(a, "123456789012345678901234567890");
cinstr(b, "987654321098765432109876543210");
// 显示输入的数字
printf("a = ");
cotnum(a, stdout);
printf("b = ");
cotnum(b, stdout);
// 执行加法
add(a, b, sum);
printf("\n加法结果 = ");
cotnum(sum, stdout);
// 执行减法
subtract(b, a, difference);
printf("减法结果 = ");
cotnum(difference, stdout);
// 执行乘法
multiply(a, b, product);
printf("乘法结果 = ");
cotnum(product, stdout);
// 执行除法
divide(a, b, quotient);
printf("商 = ");
cotnum(quotient, stdout);
// 使用 modulo 计算余数
divide(a, b, product);
printf("余数 = ");
cotnum(product, stdout);
// 执行乘方运算 (a^2) 使用乘方函数
powmod(a, mirvar(2), b, result); // 假设'b'为模数的简单幂模运算
printf("乘方结果 (a^2 mod b) = ");
cotnum(result, stdout);
// 执行最大公约数运算
xgcd(a, b, gcd, gcd, gcd); // 计算 a 和 b 的最大公约数
printf("\n最大公约数 (GCD) = ");
cotnum(gcd, stdout);
// 清理
mirexit(); // 清理 MIRACL
return 0;
}
运行截图
编写installmiracl.sh脚本,从官网自动化安装MIRACL库到~/MIRACL目录,提交代码,编译、运行过程截图或过程文本(6分),
- 要求:
- ~/MIRACL目录已经安装了MIRACL,退出脚本
- 把MIRACL官方源代码下载到~,并解压到~/你的八位学号MIRACL目录,然后删除下载的源代码
- 要给出脚本的运行测试,保证testmiracl.c能正确运行
installmiracl.sh脚本如下:
c
#!/bin/bash
# 设置安装目录
INSTALL_DIR="$HOME/MIRACL"
SOURCE_DIR="$HOME/20242817MIRACL"
# 创建安装目录
mkdir -p "$INSTALL_DIR"
mkdir -p "$SOURCE_DIR"
# 下载 MIRACL ZIP 包
echo "下载 MIRACL ZIP 包..."
wget https://github.com/miracl/MIRACL/archive/refs/heads/master.zip -O "$INSTALL_DIR/MIRACL.zip"
# 检查下载是否成功
if [ ! -f "$INSTALL_DIR/MIRACL.zip" ]; then
echo "错误:下载 MIRACL ZIP 包失败!"
exit 1
fi
# 将源代码解压到学号目录
echo "将源代码解压到学号目录..."
unzip -j -aa -L "$INSTALL_DIR/MIRACL.zip" -d "$SOURCE_DIR"
# 检查解压是否成功
if [ $? -ne 0 ]; then
echo "错误:将源代码解压到学号目录失败!"
exit 1
fi
# 进入安装目录
cd "$SOURCE_DIR"
# 运行 linux64 配置脚本
echo "运行 linux64 配置脚本..."
bash linux64
# 清理下载的 ZIP 包
echo "清理下载的 ZIP 包..."
rm "$INSTALL_DIR/MIRACL.zip"
安装成功。
在自动化脚本安装的目录里进行测试,证明MIRACL库可用,自动化脚本有效。

AI问答
-
我:
给我生成一个Ubuntu安装MIRACL的教程
-
AI:
-
我:
MIRALC库是干什么的?有什么功能?
-
AI: