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

目录

  • 前言
  • 先决条件
  • 基本依赖安装
    • 准备好 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.rhkb.cn/news/311932.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

STM32有什么高速接口吗?

STM32系列微控制器在高速接口方面也提供了一些强大的功能,虽然没有像Zynq那样的可编程逻辑部分,但有一些特性值得注意。我这里有一套嵌入式入门教程,不仅包含了详细的视频 讲解,项目实战。如果你渴望学习嵌入式,不妨点…

数据分析(2)

数据分析(2) 本文介绍pandas的另一种数据类型DataFrame,中文叫数据框 DataFrame 定义: DataFrame是一个二维的矩阵数据表,通过行和列,可以定位一个值。 在某种程度上,可以认为DataFrame是“具有相同ind…

OpenStack:开源云计算的崛起与发展

目录 一,引言 二,OpenStack的起源 三,OpenStack的版本演进 四,OpenStack跟虚拟化的区别 五,OpenStack组件介绍 1)Horizon介绍 2)KeyStone介绍 Keystone 功能概览 Keystone 架构详解 3&a…

上海计算机学会 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…

解决QtCreator不能同时运行多个程序的方法

当我们运行QtCreator代码的时候,往往一个代码,可能需要打开好几个运行,但是会出现的情况就是,如果打开了一个界面,当我么再运行的时候,第一个界面就没有了,而且可能会出现终端报错的情况&#x…

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

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

鸿蒙南向开发:【编译和烧录】指导

编译 #进入源码目录 #rm -rf ohos_config.json #hb set #. #如下图所示,按↑↓键,选择需要编译的工程名,然后回车 #hb build -f #然后回车,等待屏幕出现:BUILD SUCCESS字样,说明编译成功。如下图 #编译生成的固件在…

Java项目如何使用EasyExcel插件对Excel数据进行导入导出

文章目录 一、EasyExcel的示例导入依赖创建实体类数据导入和导出 二、EasyExcel的作用三、EasyExcel的注解 EasyExcel是一个阿里巴巴开源的excel处理框架,它以使用简单、节省内存著称。在解析Excel时,EasyExcel没有将文件数据一次性全部加载到内存中&…

IAM 统一身份认证与访问管理服务

即统一身份认证与访问管理服务,是云服务商提供的一套云上身份管理解决方案,可帮助企业安全地管理云上资源的访问权限。 在当今云计算时代,企业越来越依赖云服务来存储和处理敏感数据。然而,这也带来了新的安全挑战,即…

LeetCode——965. 单值二叉树

题目- 力扣(LeetCode) 如果二叉树每个节点都具有相同的值,那么该二叉树就是单值二叉树。 只有给定的树是单值二叉树时,才返回 true;否则返回 false。 示例 1: 输入:[1,1,1,1,1,null,1] 输出&a…

移除元素,合并两个有序数组

目录 1.移除元素 解题思路 代码 2.合并两个有序数组 解题思路 代码 1.移除元素 解题思路 原地删除数组num的val元素,那么我们需要做的是遍历num数组 再次过程中越过num数组val的元素,找num数组中不是val的原素,并把它们从头依次放入…

【重回王座】ChatGPT发布最新模型gpt-4-turbo-2024-04-09

今天,新版GPT-4 Turbo再次在大型模型排行榜上荣登榜首,成功超越了此前领先的Claude 3 Opus。另外,新模型在处理长达64k的上下文时,性能竟能够与旧版在处理26k上下文时的表现相当。 目前GPT-4 Turbo仅限于ChatGPT Plus的用户&…

锂电池充放电管理-单片机通用

锂电池充放电管理-单片机通用 一、锂电池充放电检测的原理二、power.c的实现三、power.h的实现四、锂电池检测和充电电路 一、锂电池充放电检测的原理 ①两节锂电池通过电阻分压检测ADC,再根据电压划分电量等级;②充电使用的是锂电池充电IC方案&#xf…

LangChain-Chatchat 开源知识库来了

LangChain-Chatchat 开源知识库来了 LangChain-Chatchat 架构设计LangChain-ChatChat 具体实现过程 一键本地离线部署软件环境硬件环境支持三种部署方式 LangChain-Chatchat 是基于 ChatGLM 等大语言模型与 LangChain 等应用框架实现,开源、可离线部署的 RAG 检索增…

Python赋能AI数据分析开启人工智能新时代

文章目录 一、Python是办公自动化的重要工具二、Python是提升职场竞争力的利器三、Python是企业数字化的重要平台四、Python是AI发展的重要通道之一《编程菜鸟学Python数据分析》编辑推荐内容简介作者简介目录前言为什么要写这本书读者对象如何阅读本书 随着我国企业数字化和信…

Python SQL解析和转换库之sqlglot使用详解

概要 Python SQLGlot是一个基于Python的SQL解析和转换库,可以帮助开发者更加灵活地处理和操作SQL语句。本文将介绍SQLGlot库的安装、特性、基本功能、高级功能、实际应用场景等方面。 安装 安装SQLGlot库非常简单,可以使用pip命令进行安装: pip install sqlglot安装完成后…

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

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

跟TED演讲学英文:The dark side of competition in AI by Liv Boeree

The dark side of competition in AI Link: https://www.ted.com/talks/liv_boeree_the_dark_side_of_competition_in_ai Speaker:Liv Boeree Date: October 2023 文章目录 The dark side of competition in AIIntroductionVocabularyTranscriptSummary后记 Introduction Co…

Qt 实战(2)搭建开发环境 | 2.1、Windows下安装QT

一、Windows下安装QT 1、QT官网 QT官网:https://download.qt.io/,打开官网地址,如下: 目录结构介绍 目录说明snapshots预览版,最新的开发测试中的 Qt 库和开发工具onlineQt 在线安装源official_releases正式发布版&am…

HarmonyOS开发案例:【智能煤气检测】

样例简介 智能煤气检测系统通过实时监测环境中烟雾浓度,当一氧化碳浓度超标时,及时向用户发出警报。在连接网络后,配合数字管家应用,用户可以远程配置智能煤气检测系统的报警阈值,远程接收智能煤气检测系统报警信息。…