【教程】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.mfbz.cn/a/549369.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

跨国公司网络优化新选择:SD-WAN解决方案

随着全球化的加速推进,跨国企业纷纷实施跨国战略,然而,在各地建立分支机构、数据中心的过程中,往往面临网络性能差异大、数据传输效率低下等问题。在这样的背景下,SD-WAN成为跨国公司网络解决方案的优选。 跨国企业对于…

IO、存储、硬盘、文件系统相关常识

目录 IO 文件系统 文件在硬盘上的存储 IO IO,就是Input和Output,即输入和输出操作。我们的电脑可以通过网络下载文件,也可以通过网络上传文件。通过网络下载文件就是输入操作,上传文件就是输出。如何区分输入和输出呢&#xf…

imgcat 工具

如果经常在远程服务器或嵌入式设备中操作图片,要查看图片效果,就要先把图片dump到本地,比较麻烦。可以使用这个工具,直接在终端上显示。类似于这种效果。 imgcat 是一个终端工具,使用 iTerm2 内置的特性,允…

精益思维驱动人工智能革新:理论到实践的跃迁之旅

随着科技的飞速发展,人工智能(AI)已成为引领未来的关键力量。在这个变革的时代,如何将精益思维与人工智能相结合,推动AI从理论走向实践,成为行业内外关注的焦点。本文,天行健精益生产顾问将分享…

陇剑杯 流量分析 webshell CTF writeup

陇剑杯 流量分析 链接:https://pan.baidu.com/s/1KSSXOVNPC5hu_Mf60uKM2A?pwdhaek 提取码:haek目录结构 LearnCTF ├───LogAnalize │ ├───linux简单日志分析 │ │ linux-log_2.zip │ │ │ ├───misc日志分析 │ │ …

阿里云优惠券种类介绍及领取教程详解

随着互联网技术的快速发展,越来越多的企业和个人开始将业务和数据迁移到云端。阿里云作为国内领先的云服务提供商,为广大用户提供了丰富多样的云产品和服务。为了回馈用户,阿里云经常推出各种优惠活动,其中优惠券就是其中一种常见…

记录一下我hive连不上DataGrip的问题

用户名和密码都没问题,但报如下这个错误 原因:是因为我在linux上没启hiveserver2服务 解决: [atguiguhadoop102 hadoop]$ hiveserver2 which: no hbase in (/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/module/jdk1.8…

第19天:信息打点-小程序应用解包反编译动态调试抓包静态分析源码架构

第十九天 本课意义 1.如何获取到目标小程序信息 2.如何从小程序中提取资产信息 一、Web&备案信息&单位名称中发现小程序 1.国内主流小程序平台 微信 百度 支付宝 抖音头条 2.小程序结构 1.主体结构 小程序包含一个描述整体程序的app和多个描述各自页面的page …

RAG算法优化+新增代码仓库支持,CodeGeeX的@repo功能效果提升

CodeGeeX在升级到第三代模型时,就引入了RAG检索增强生成的能力。即模型会根据检索到的相关背景知识生成回答,大幅减轻生成内容的幻觉性。在CodeGeeX插件中,是通过侧边栏对话框中输入“repo”触发 RAG 技术。用户可以对开源代码仓库进行提问&a…

HG泄露(ctfhub)

工具准备:dirsearch、dvcs-ripper 网络安全之渗透测试全套工具篇(内含安装以及使用方法)_dvcs-ripper-CSDN博客 dvcs-ripper:一款perl的版本控制软件信息泄露利用工具,支持bzr、cvs、git、hg、svn... tree //树状…

突破编程_前端_SVG(使用 svg-pan-zoom 库进行平移与缩放)

1 svg-pan-zoom 概述 svg-pan-zoom 是一个轻量级、高性能且易于使用的 JavaScript 库,专为增强 SVG 图像的浏览体验而设计。它提供了平移和缩放功能,使用户能够无缝探索大型或复杂的 SVG 图形。这个库允许用户对SVG图像进行交互操作,包括缩放…

App怎么创建百度百科词条

创建一个App的百度百科词条可以帮助提高App的知名度和权威性,以下是详细的创建步骤和注意事项: 创建步骤 注册百度账号:首先,你需要有一个百度账号,如果没有,你需要按照步骤申请一个,这一步骤是…

【ENSP】华为三层交换机配置AAA认证,开启telnet服务

配置步骤 1.给交换机配置ip地址,以便登陆 2.配置AAA,用户名,密码,服务类型,用户权限 3.配置接入设备的数量 4.开启telnet服务 LSW2交换机配置 u t m #关闭提示 sys …

[Linux]--关于进程控制

进程创建,fork/vfork 在linux中fork函数是非常重要的函数&#xff0c;它从已存在进程中创建一个新进程。新进程为子进程&#xff0c;而原进程为父进程。 #include <unistd.h> pid_t fork(void); 返回值&#xff1a;自进程中返回0&#xff0c;父进程返回子进程id&#x…

网工内推 | 等保测评工程师,朝九晚六,周末双休,有相关认证优先

01 江苏国保测评中心 招聘岗位&#xff1a;等保测评工程师 职责描述&#xff1a; 1.测评类项目的物理安全测评、主机安全测评、数据安全测评、应用安全测评、风险评估、差距分析等并编制相关报告; 2.协助业务部门完成网络安全等级保护测评、信息安全咨询、信息安全风险评估等项…

第1章:自动驾驶车辆“规划”与“控制”的通用架构

1.1 自动驾驶的分级 2014年美国汽车工程师学会 (SAE) 定义了6个无人驾驶等级&#xff0c;从0级&#xff08;完全手动&#xff09;到5级&#xff08;完全自动&#xff09;&#xff0c;这些无人驾驶等级准则已经被美国交通部采纳&#xff1b;该标准也被称为SAE标准&#xff1b; …

数模转换(ADC)、IIC、2440内部IIC寄存器、主机发送、主机接收

我要成为嵌入式高手之4月15日ARM第八天&#xff01;&#xff01; ———————————————————————————— ADC 概念 ADC是模拟到数字转换器的缩写。是一种电子设备或者模块。用于将连续变化的模拟信号转换为离散的数字信号&#xff0c;以便数字系统能够对…

Open3D 体素滤波(30)

Open3D 体素滤波(30) 一、算法介绍二、算法实现1.代码2.效果一、算法介绍 体素滤波(Voxel Grid Filtering)是一种常用的点云滤波算法,用于对点云数据进行下采样(降低数据密度)以及去除噪声。该算法将点云数据划分为规则的体素网格,然后在每个体素中选择一个代表性点作为…

动态规划算法求解最长公共子序列

动态规划算法是运筹学中求解多阶段决策问题的经典算法&#xff0c;本文将介绍动态规划算法的基本思想&#xff0c;并介绍如何使用动态规划算法求解最长公共子序列问题。 1. 动态规划算法的基本思想 动态规划算法本质也是基于分治思想&#xff0c;将待求解问题分解成若干个子问…

掀起区块链开发狂潮!Scaffold-eth带你一键打造震撼DApp

文章目录 前言一、Scaffold-eth是什么&#xff1f;二、安装和配置1.准备工作2.安装3.配置开发环境 三、进阶使用1.放入自己的合约2.部署运行 总结 前言 前面的文章传送&#x1f6aa;&#xff1a;hardhat入门 与 hardhat进阶 在之前的文章中&#xff0c;我们已经探讨了使用Har…
最新文章