# 旧代码 **Repository Path**: peterhao89/old-code ## Basic Information - **Project Name**: 旧代码 - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: haoyl-dev - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-02-24 - **Last Updated**: 2026-02-24 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 合作研究 以将前期工作中的绝大部分整理到这里了,初次使用请在main分支的基础上创建一个自己的分支(比如:haoyl-dev), 然后在自己的分支上就可以随心所欲地做各种操作了!(切换分支用git checkout haoyl-dev这样)。 ## 目录结构 初步分为Codes、Read、Writeup三个目录。 ### Writeup论文写作和Slides制作 放置原创的论文和PPT等。目前已经放置了之前试水CRYPTO'22的关于SNOW系列算法 FCA的文章(Writeup/Paper/SnowFamilyLinear)、 带符号差分介绍(Writeup/Paper/SignedDifference)、 Mason素数的分析(Writeup/Paper/MasonPrime)等。 注意1:所有最终生成pdf的文件都是以main起始的文件(如:mainMasonPrime.tex)。 注意2:所有编译main\*.tex所需的公共类都在Writeup/Paper/CommonUtils里面, 具体的使用方法请参考[这篇博客](https://marquistj13.github.io/MyBlog/2017/04/install-latex-cls/) 以及[百度网盘](https://pan.baidu.com/s/1wNysRnRwRwfLVNRL9DXd5g )(提取码:loae)中的视频教程。 注意3: 我们将采用密码学专用开源参考文献库`CryptoBib`. 相关.bib文件存放于 Writeup/Paper/CommonUtils/cryptobib/. 详细引用说明见[CryptoBib](https://cryptobib.di.ens.fr/) 如何将其存放于~/texmf, 供所有tex compiler共用? ### Read阅读资料 放置各种需要学习的资料。值得注意的是:由于大部分学习资料都是pdf文件,而.gitignore中把所有pdf文件都屏蔽了,如果要在Read中添加xx.pdf,则需要在git add后增加--force选项: ``` git add --force Read/xx.pdf ``` ### Codes程序代码 所有的实验程序代码都放在这个文件夹下,用cmake来进行管理, 注意:下载代码的时候,由于Codes/Util/Gurobi是一个外部的git仓库作为子模块引入的,所以在clone完以后还需要进一步把 子模块的代码也同步下来,即: ``` git clone https://gitlab.com/peterhao89/fhe-related-cryptanalysis.git cd fhe-related-cryptanalysis git submodule update --init --recursive ``` 这里的代码使用到的第三方库包括[Boost](https://www.boost.org/)(统一要求版本[1.76](https://boostorg.jfrog.io/artifactory/main/release/1.76.0/source/))、 [NTL](https://libntl.org/)、[Gurobi](https://www.gurobi.com/)。它们的使用方法后面会详细说明。 第三方库装好之后,使用起来就很简单了,Linux基本上就是: ``` cd Codes mkdir build cd build cmake .. make ``` Windows下就是用VS2019直接“打开Cmake项目”然后选择Codes目录下的CMakeLists.txt即可。 Windows和Linux下详细的配置过程已录制视频解说并上传至百度网盘: ``` 链接:https://pan.baidu.com/s/1wNysRnRwRwfLVNRL9DXd5g 提取码:loae ``` #### Gurobi安装 Gurobi作为商业软件安装非常简单。 Windows下就是下载安装包一路“下一步”。 Linux就是下载压缩包然后解压到任意位置。 我们统一用“/dir/to/gurobi”来表示Gurobi的安装路径(Windows通常是类似“D:\gurobi951\win64”, Linux下可以是“/opt/gurobi951/linux64”), 这个路径下包含着bin、include、docs、examples等文件夹和EULA.pdf等文件。 为了能够顺利编译,要求定义2个环境变量GUROBI_HOME和GUROBI_VERSION。 其中GUROBI_HOME指向的就是安装路径“/dir/to/gurobi”而GUROBI_VERSION的值就是Gurobi的版本号95/90/85等。 在Linux下可以通过在.bashrc末尾加上 ``` export GUROBI_HOME=/opt/gurobi951/linux64 export GUROBI_VERSION=95 export LD_LIBRARY_PATH=$GUROBI_HOME/lib ``` 而Windows需要在环境变量中定义GUROBI_HOME并设值为“D:\gurobi951\win64”, 定义GUROBI_VERSION并设置为95。 #### NTL安装 先从NTL的[官网](https://libntl.org/download.html)下载NTL,并解压缩。 Linux下可以直接安装: ``` cd ntl-11.5.1 cd src ./configure make make check make install ``` Windows下可以用VS2019进行编译生成相关的.lib静态库文件。 具体做法参考视频。 安装完成后记得增加一个环境变量NTL_ROOT 指向NTL的根目录。 #### Boost安装 注意:Boost安装完成之后 需要一个叫BOOST_ROOT的环境变量,指向Boost的安装目录。 主要的安装语句差不多就2条。Linux下差不多就是: ``` ./bootstrap.sh ./b2 install --prefix=dir/to/install ``` Windows下就是 ``` bootstrap.bat b2.exe install --prefix=dir/to/install ``` 这样就够做实验用的了。 如果要在Windows下使用加入bzip2或者zlib的话,就可用 ``` bootstrap.bat b2.exe install --prefix=dir/to/install --with-iostreams -s BZIP2_SOURCE="dir/to/bzip" -s ZLIB_SOURCE="dir/to/zlib" ``` 而在Linux下的话只需要用apt/yum安装zlib-dev或者bzip2-dev库就可以了。