【教程】ubuntu20.04 下配置 Charm-crypto 0.5 实验环境

news2024/11/24 5:25:27

目录

  • 前言
  • 先决条件
  • 基本依赖安装
    • 准备好 gcc,make 和 perl
    • 准备好 m4,flex,bison 和 libssl-dev
    • 安装 Python3.x,pip3 和 pyparsing
  • 安装 OpenSSL
  • 安装 GMP5.x
  • 安装 PBC
  • 安装 Charm-crypto5.0
  • 安装开发环境
  • 检验 Charm-crypto5.0 安装成功
  • 参考

前言

Charm-crypto 是一个基于 Python 的密码学框架,最大的特点是可以基于它进行密码学方案的原型设计,因此绝大多数的相关论文中都以此为平台进行实验验证。

但是由于 Charm-crypto 项目整体比较老旧,更新维护的很少,所以当下进行部署安装经常会遇见操作系统不兼容,依赖库版本不匹配等问题。

在看了很多网上安装教程后,感觉挺麻烦的,但是实际操作过后,其实也挺简单的,版本兼容的问题也不大。

发现很多论文的验证都是放在 U’buntu14 这样的平台上,应该是实验室继承下来的开发环境,笔者没有这样的条件,只有自己搭建一下测试的环境,并选择在 Ubuntu20.04 上完成对 Charm-crypto0.5 版本(最新版,也叫做 dev 版)。

先决条件

在正式开始之前,有一些必要的条件需要提前准备,这些条件基本和 Charm-crypto0.5 本身无关,主要是基本环境的需要。

  1. Ubuntu20.04:至于其他较新的版本也有博主验证过,问题不大【1】
  2. 可以科学上网:由于部分资源需要外网下载,需要良好的网速
  3. apt,apt-get 的下载源推荐使用国内的镜像,同样也是为了良好的下载速度

基本依赖安装

准备好 gcc,make 和 perl

在 Ubuntu20.04 中默认都安装好了这些工具的,你只需要通过输入上述命令,并在后面添加 -v 来确定一遍

gcc -v
make -v
perl -v

准备好 m4,flex,bison 和 libssl-dev

这几个库为后续库的前置库

sudo apt update
sudo apt install m4 flex bison libssl-dev

安装 Python3.x,pip3 和 pyparsing

由于 Ubuntu20.04 一般默认就安装了 Python3.7 和 pip3,因此这一步就无需进行过多的操作,如果没有的话,请先进行安装。

接着需要设置默认的 Python 版本为 Python3,同理 pip 也需要设置为 pip3。

将其指向的原因是后续的一些自动化配置中,会利用到 Python 命令,如果你没有将其绑定到 Python3 上,就无法执行。

本文通过软链接的方式将 Python 指向 Python3,实现系统级修改

sudo ln -s /usr/bin/python3 /usr/bin/python

此时再次执行 python 命令则会进入 python 交互状态

python
Python 3.8.10 (default, Mar 15 2022, 12:22:08) 
[GCC 9.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> 

pip 采用相同的设置方式进行设置

下面安装 pyparsing,这是一个用于解析文本的 python 库

pip3 install pyparsing

安装 OpenSSL

OpenSSL 是一个安全套接字层的密码学库,提供了非常多的常用密码学算法

Ubuntu20.04 下默认也是安装好了 OpenSSL 的,你可以输入一下命令进行检查

openssl version
OpenSSL 1.1.1f  31 Mar 2020

安装 GMP5.x

GMP 是一个提供高精度运算的开源库,它的官方网站链接在这里

首先进入官方的下载页面,选择下载 gmp-5.1.3.tar.bz2 这个版本,在 Ubuntu20.04 下,下载的文件被放入了 Downloads 文件夹中,下面执行如下的命令对 GMP 进行安装

# 回到 Home 目录
cd ~

# 进入 Downloads 文件夹
cd Downloads/

# 解压文件,并移动至 /usr/local/src
# 该目录常被用于存放本地安装程序的源码
sudo tar -jxvf gmp-5.1.3.tar.bz2 -C /usr/local/src

# 进入该目录
cd /usr/local/src/gmp-5.1.3

# 执行配置文件
sudo ./configure

# make
sudo make

# 安装
sudo make install

安装成功后出现如下界面
在这里插入图片描述

安装 PBC

PBC 是一个基于 GMP 的提供“配对”功能的密码学库,它的官方网站链接在这里

类似 GMP 的安装方式,我们先在相关的下载页面选择最新版进行下载,即 pbc-0.5.14.tar.gz

下载完成后,我们进入 Downloads 文件夹中,并执行如下命令进行安装操作

cd Downloads/

# 解压并移动至 /usr/local/src
sudo tar -zxvf pbc-0.5.14.tar.gz -C /usr/local/src

# 进入该目录
cd /usr/local/src/pbc-o.5.14.tar.gz

# 配置
sudo ./configure

# 编译
sudo make

# 安装
sudo make install

安装成功后出现如下界面
在这里插入图片描述

安装 Charm-crypto5.0

在 Charm-crypto5.0 的 Github 仓库中,找到 dev 版本进行下载(dev 就是 5.0 版本)
在这里插入图片描述
接下来我们执行如下命令进行安装

# 移动 Charm-dev.zip 至 /usr/local/src
sudo mv charm-dev.zip /usr/local/src

# 进入该目录
cd /usr/local/src/

# 解压
sudo unzip charm-dev.zip 

# 进入 charm-dev 并进行配置
cd charm-dev/
sudo ./configure.sh 

# make
sudo make

# 安装
sudo make install

安装成功后出现如下界面
在这里插入图片描述

安装开发环境

在本文中选择 vscode + 相关插件进行开发,也可以选择诸如 Pycharm 等 IDE 开发工具

在桌面导航栏中选择【软件中心】进行安装,具体步骤如下
在这里插入图片描述
安装完成后,打开命令行输入 code 启动 vscode
在这里插入图片描述
接下来我们在插件中安装 python 开发需要用到的插件,按如下顺序进行安装即可。Flake8yapf 都是用于代码格式化的插件
在这里插入图片描述
至此,Python 的开发环境已经安装完成

然后,我们随便新建一个文件进行测试
在这里插入图片描述
如果你的控制台能够产生合法输出,则说明 python 开发环境安装成功

【注】如果你的 Ubuntu 中没有左侧的【软件中心】,可以执行如下命令进行安装,安装完毕后该图标会出现在导航栏中

sudo apt install gnome-software

检验 Charm-crypto5.0 安装成功

接着,我们创建一个密码学测试文件
在这里插入图片描述
输入如下代码

import hashlib

# 创建一个 hashlib.sha256 对象
hasher = hashlib.sha256()

# 将数字 123 转换为字节数组
data = str(123).encode()

# 使用 sha256 哈希函数更新数据
hasher.update(data)

# 获取哈希值
hash_value = hasher.hexdigest()

# 打印哈希值
print(hash_value) # a665a45920422f9d417e4867efdc4fb8a04a1f3fff1fa07e998e86f7f7a27ae3

若控制台能够产生合法输出,则说明 Charm-crypto5.0 环境安装成功

PS:经过实践,此方法无法在阿里云无影云桌面环境下起效,当重启后无法进入无影云桌面

参考

  1. Linux安装Charm-crypto环境详细流程
  2. charm-crypto安装(一)
  3. Charm-Crypto 安装指南

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1600877.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【高端电流检测IC储能产品应用方案】耐压45V侧轨的电流检测芯片FP137 应用于电脑电源,开关电源以及多口快充充电器,户外移动电源,适配器,电池充电器等

近年来,随着电子产品的飞速发展,对电流检测精度和可靠性的要求也越来越高。特别是在电脑电源、开关电源以及多口快充充电器、户外移动电源、适配器、电池充电器等领域,对电流检测技术的需求更是日益增长。 电流检测芯片是一种关键的电子元器…

异地组网如何安装?

【天联】是一款强大的异地组网安装工具,可以帮助企业实现远程设备的统一管理和协同办公。以下是【天联】可以应用的一些场景: 零售、收银软件应用统一管理:【天联】可以结合医药、餐饮、商超等零售业的收银软件,实现异地统一管理。…

企业邮箱迁移是什么?如何通过IMAP/POP协议进行邮箱迁移?

使用公司邮箱工作的过程中,公司可能遇到公司规模的扩大或技术架构升级,可能要换公司邮箱。假如马上使用新的公司邮箱,业务处理要被终断。企业邮箱转移是公司更换邮箱不可或缺的一步,不仅是技术操作,更是企业信息安全、…

【机器学习300问】71、神经网络中前向传播和反向传播是什么?

我之前写了一篇有关计算图如何帮助人们理解反向传播的文章,那为什么我还要写这篇文章呢?是因为我又学习了一个新的方法来可视化前向传播和反向传播,我想把两种方法总结在一起,方便我自己后续的复习。对了顺便附上往期文章的链接方…

和鲸科技将参与第五届空间数据智能学术会议并于应急减灾与可持续发展专题论坛做报告分享

ACM SIGSPATIAL中国分会致力于推动空间数据的研究范式及空间智能理论与技术在时空大数据、智慧城市、交通科学、社会治理等领域的创新与应用。ACM SIGSPATIAL中国分会创办了空间数据智能学术会议(SpatialDI),分会将于2024年4月25日-27日在南京…

记【k8s】:访问 Prometheus UI界面:kubernetes-etcd (0/1 up) Error : out of bounds

记【k8s】:访问 Prometheus UI界面:kubernetes-etcd (0/1 up) Error : out of bounds 1、报错详情2、解决方法 💖The Begin💖点点关注,收藏不迷路💖 出现 “out of bound…

Spark-机器学习(2)特征工程之特征提取

在之前的文章中,我们了解我们的机器学习,了解我们spark机器学习中的MLIib算法库,知道它大概的模型,熟悉并认识它。想了解的朋友可以查看这篇文章。同时,希望我的文章能帮助到你,如果觉得我的文章写的不错&a…

回归损失函数

目录 1 MAE 2 MSE 3 MAPE 4 Quantile Loss分位数损失 回归损失函数也可以做为评价指标使用,但是有没有想过数据分布与损失函数之间的关系呢! 使用特定损失函数的前提是我们对标签的分布进行了某种假设,在这种假设的前提下通过极大似然法推…

4.16学习总结

MySQL数据库学习(一) 一.MySQL数据库的基本知识 (一).数据库 概念:数据仓库,软件,安装在操作系统之上 作用:存储数据,管理数据 (二).数据库的分类 关系型数据库:SQL(Structured Query Language) MySQL…

Rust面试宝典第4题:打家劫舍

题目 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统。如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。 给定一个代表每个房屋存放金额的非负整…

简单3步,OpenHarmony上跑起ArkUI分布式小游戏

标准系统新增支持了方舟开发框架(ArkUI)、分布式组网和 FA 跨设备迁移能力等新特性,因此我们结合了这三种特性使用 ets 开发了一款如下动图所示传炸弹应用。 打开应用在通过邀请用户进行设备认证后,用户须根据提示完成相应操作&am…

回归预测 | Matlab实现GWO-GPR灰狼算法优化高斯过程回归多变量回归预测

回归预测 | Matlab实现GWO-GPR灰狼算法优化高斯过程回归多变量回归预测 目录 回归预测 | Matlab实现GWO-GPR灰狼算法优化高斯过程回归多变量回归预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 Matlab实现GWO-GPR灰狼算法优化高斯过程回归多变量回归预测 1.Matlab实现…

上海计算机学会 2023年10月月赛 乙组T3 树的连通子图(树、树形dp)

第三题:T3树的连通子图 标签:树、树形 d p dp dp题意:给定一棵 n n n个结点的树, 1 1 1号点为这棵树的根。计算这棵树连通子图的个数,答案对 1 , 000 , 000 , 007 1,000,000,007 1,000,000,007取余数。题解&#xff1…

笔记本电脑上的聊天机器人: 在英特尔 Meteor Lake 上运行 Phi-2

对应于其强大的能力,大语言模型 (LLM) 需要强大的算力支撑,而个人计算机上很难满足这一需求。因此,我们别无选择,只能将它们部署至由本地或云端托管的性能强大的定制 AI 服务器上。 为何需要将 LLM 推理本地化 如果我们可以在典配…

Java之二维数组

使用二维数组: 引用二维数组元素需要指明行下标和列下标。二维数组有两个指标,行数使用“数组名.length",每行的列数使用“数组名[i].length”。遍历是二维数组的基本算法,使用双重循环遍历二维数组。外层循环控制行,内存循环…

Kubernetes对象的定义和操作

📕作者简介: 过去日记,致力于Java、GoLang,Rust等多种编程语言,热爱技术,喜欢游戏的博主。 📘相关专栏Rust初阶教程、go语言基础系列、spring教程等,大家有兴趣的可以看一看 📙Jav…

HTML内联框架

前言&#xff1a; 我们有时候打开网页时会有广告窗的出现&#xff0c;而这些窗口并不是来自于本站的&#xff0c;而是来自于外部网页&#xff0c;只是被引用到了自己网页中而已。这一种技术可以通过内联来实现。 标签介绍&#xff1a; HTML 内联框架元素 (<iframe>) 表示…

DNS服务器配置与管理(3)——综合案例

DNS服务器配置与管理 前言 在之前&#xff0c;曾详细介绍了DNS服务器原理和使用BIND部署DNS服务器&#xff0c;本文主要以一个案例为驱动&#xff0c;在网络中部署主DNS服务器、辅助DNS服务器以及子域委派的配置。 案例需求 某公司申请了域名example.com&#xff0c;公司服…

linux C -- 消息队列

linux C -- 消息队列 前言一、System V(IPC)消息队列接口调用主要涉及到 msgget、msgsnd、msgrcv 和 msgctl 四个接口&#xff1a; 1、创建消息队列 msgget2、发送消息到队列3、从队列接收信息4、控制消息队列 msgctl5、删除消息队列 二、代码编写1、发送部分的代码2、代码完成…

牛客-环形链表的约瑟夫问题

目录 题目 描述 示例1 示例2 图解 代码(解析在注释中) 题目 描述 编号为 1 到 n 的 n 个人围成一圈。从编号为 1 的人开始报数&#xff0c;报到 m 的人离开。 下一个人继续从 1 开始报数。 n-1 轮结束以后&#xff0c;只剩下一个人&#xff0c;问最后留下的这个人编号…