SEAL库编译与使用


简介

SEAL库是微软开源的一个简单算术加密库(Simple Encrypted Arithmetic Library),可以直接在加密数据上执行计算,且其效率是非常高的。
这次简单说明下win或linux下怎么编译使用SEAL库。
项目地址:Github-SEAL
官网:Microsoft Search-SEAL

下载

从上面的地址中git克隆下我们最新的SEAL库源代码,到目前为止(2019.9.9)其最新版本为3.3.2
从目录和说明文档中我们可以知道,dotnet为.NET框架的C#程序版本,native为本地的C++程序版本。

Windows

在Win平台,官方推荐我们使用Microsoft Visual Studio 2017,且编译模式建议选择Release,并开启多处理器编译/MP

编译

首先打开项目文件夹下的SEAL.sln进入Visual Studio 2017编辑,初次打开可能会给你报很多错误。
右侧项目文件夹选择native右键 - 属性 - 配置属性 - 常规中,设置Windows SDK版本为你所有的版本,默认是16299,而你本机自带的可能是17763。

在C/C++ - 常规中设置多处理器编译以提高速度
多处理器编译
注意使用Release X64
Tips:编译需要Visual Studio Installer中的CMake包和Viusal C+ Plus工具

编译成功如下:
编译成功
在项目文件夹的native/lib/x64/Release中你能找到最后生成的seal.lib库文件。

使用

使用Visual Studio 2017新建一个空项目
新建项目
右侧方案管理器项目右键添加-新建项-c++文件,命名为example.cpp
然后项目右键-属性进入详细配置
确保配置为所有平台
全平台
在C/C++ - 常规中将native/src文件夹包含进来
include
链接器 - 常规中设置附加库目录(绝对路径)\native\lib\$(Platform)\$(Configuration)
lib
链接器 - 输入中添加seal.lib;
最后确定。
在example.cpp文件中写入一下代码

#include <iostream>
#include "seal/seal.h"

using namespace std;
using namespace seal;

int main()
{
    EncryptionParameters parms(scheme_type::BFV);
    return 0;
}

这是使用BFV方案的最简SEAL库应用代码,确保你是在Release,X64下构建,开始生成
编译成功
最终编译成功,因为没有输出,所以会立即退出没有显示。

Linux

使用

官方已有编译示例,这里不再赘述。
直接进入使用
我们在项目文件夹下新建项目mkdir SEALDemo
进入目录cd SEALDemo,并新建一个cpp文件 nano example.cpp
内容和上面在win平台写的一样,确认无误后保存
然后,最重要的是创建我们的CMakeLists.txt文件

cmake_minimum_required(VERSION 3.10)
project(SEALDemo VERSION 1.0)
add_executable(example example.cpp)

find_package(SEAL)
target_link_libraries(example SEAL::seal)

确认保存,输入cmake .,在输入make,完成效果如下
linux
输入./example 显然这没有输出,但已成功运行
至此,两个平台SEAL库的编译与使用已全部完成!
如有错误欢迎指正!另外,微软也在YTB上提供了官方教学视频,通过上面的官网链接可前去查看。

声明:有限可能|版权所有,违者必究|如未注明,均为原创|本网站采用BY-NC-SA协议进行授权

转载:转载请注明原文链接 - SEAL库编译与使用


Something for nothing