IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 区块链 -> 基于近似计算的同态加密方案CKKS17实现库介绍 -> 正文阅读

[区块链]基于近似计算的同态加密方案CKKS17实现库介绍

一、简介

? ? ? ? CKKS17方案提出了近似计算方法,方案可以对实数进行加密,这与此前均是基于整数的同态加密有很大不同。正是这一点,基于近似计算的同态加密方案可以支持现实中的大多数应用环境,具有较大发展潜力。

? ? ? ? 目前支持CKKS17方案的库主要有:HEAAN、SEAL、HElib、PALISADE、CIMERA和PEGASUS。本文主要介绍HEAAN和SEAL库的安装环境配置,后面几个库今后了解更多可能会补充进来。

二、SEAL

? ? ? ? SEAL的最大优势就是微软开发的,可以应用在Windows下,并且代码开发规范,注释写得很好。

? ? ? ? SEAL使用较为方便。在使用SEAL3.5版本时,直接打开SEAL.sln就可以对代码进行编辑修改运行。不过在运行时总会报很多玄学错误,时常要重新生成方案,这一点上来说还是比较麻烦的。

? ? ? ? SEAL3.7以上版本取消了SEAL.sln这个文件,具体配置运行方法在README中有提及,按照README中所述方法可以正常进行配置。

? ? ? ? SEAL对Visual Studio版本有要求,比如SEAL3.5中明确指明需要Visual Studio 2019版本以上。

????????虽然传说SEAL库不依赖与NLT等计算库,但是还是建议配置前提前安装下NLT和GMP,不然总会有玄学的事情发生。

三、HEAAN

? ? ? ? HEAAN是CKKS17论文作者提供的实现库,README中说在Ubuntu 16.04环境下可配置成功。实际测试时环境为Ubuntu 20.04,也可配置成功。

? ? ? ? HEAAN库有多种版本,如HEAAN-master、HEAANBOOT、FULL-RNS-HEAAN等。HEAANBOOT是CHK+18a中针对方案自举实现的可自举近似计算同态加密库,FULL-RNS-HEAAN则是针对CHK+18b中RNS变体实现的近似计算同态加密库。而HEAAN-master是该课题组一直在维护的实现库,下面的配置使用的是HEAAN-master库。

? ? ? ? HEAAN依赖于NTL库,使用前需安装NTL库。而NTL库需要g++、m4和gmp的支持。

安装g++

sudo apt-get install g++

? ? ? ? 可以通过g++ --version查看g++的版本。

安装m4

sudo apt-get install m4

安装gmp

????????官网:The GNU MP Bignum Library/

? ? ? ? 到达下载文件的路径并执行,我下载的是gmp-6.2.1.tar.lz,具体版本号会有差异需更改:

sudo apt-get install lzip
lzip -d gmp-6.2.1.tar.lz
tar -xvf gmp-6.2.1.tar
cd gmp-6.2.1
./configure --enable-cxx
make
make check
sudo make install

????????可以通过如下代码try.cpp进行测试:

#include <iostream>
#include <gmpxx.h>
using namespace std;
 
int main()
{
    mpz_t a,b,c;
    mpz_init(a);
    mpz_init(b);
    mpz_init(c);
    gmp_scanf("%Zd%Zd",a,b);
    mpz_add(c,a,b);
    gmp_printf("%Zd\n",c);
    mpz_clear(a);
    mpz_clear(b);
    mpz_clear(c);
    return 0;
}

? ? ? ? 编译:

g++ try.cpp -o try -lgmpxx -lgmp

? ? ? ? 运行时可以输入两个巨长的数字测试大整数加法。

安装NTL

? ? ? ? 可在?NTL: A Library for doing Number Theory下载,下载后的文件ntl-x.x.x/doc/tour-unix.html文件中有安装教程,安装过程如下:

gunzip ntl-xxx.tar.gz
tar xf ntl-xxx.tar
cd ntl-xxx/src
./configure
make
make check
sudo make install

????????测试程序:

#include <NTL/ZZ.h>

using namespace std;
using namespace NTL;

int main()
{
   ZZ a, b, c; 

   cin >> a; 
   cin >> b; 
   c = (a+1)*(b+1);
   cout << c << "\n";
}

? ? ? ? 安装时可能会遇到:

GMP version check (6.1.2/6.1.0)
*** version number mismatch: inconsistency between gmp.h and libgmp
Aborted (core dumped)
makefile:353: recipe for target ‘setup3’ failed

????????可能是gmp版本与ntl版本不一致导致的,解决办法:

sudo ldconfig

安装HEAAN

????????在/lib文件夹里执行make all,执行成功可以看到生成libHEAAN.a文件。

????????测试

? ? ? ? 先在/run文件夹下执行make命令,会生成TestHEAAAN文件,可以通过./TestHEAAN?Encrypt来进行测试。TestHEAAN后的参数可见下图。运行时较费时,可能出现许久没有结果,不是电脑卡顿或命令问题,耐心等待就好。

  区块链 最新文章
盘点具备盈利潜力的几大加密板块,以及潜在
阅读笔记|让区块空间成为商品,打造Web3云
区块链1.0-比特币的数据结构
Team Finance被黑分析|黑客自建Token“瞒天
区块链≠绿色?波卡或成 Web3“生态环保”标
期货从入门到高深之手动交易系列D1课
以太坊基础---区块验证
进入以太坊合并的五个数字
经典同态加密算法Paillier解读 - 原理、实现
IPFS/Filecoin学习知识科普(四)
上一篇文章      下一篇文章      查看所有文章
加:2022-01-01 13:56:56  更:2022-01-01 13:58:22 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 0:34:00-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码