libtom/libtomcrypt

GitHub: libtom/libtomcrypt

一个模块化、可移植的 C 语言密码学工具库,为开发者提供全面的加密算法与哈希函数实现。

Stars: 1783 | Forks: 494

# libtomcrypt 以前 git 仓库中包含 `doc/crypt.pdf` 作为详细文档。 这已经改变了,现在该文件只能从相应版本的 tarball 中获取, 或者从页面 https://github.com/libtom/libtomcrypt/releases 获取。 ## 项目状态 ### Travis CI master: [![Build Status](https://static.pigsec.cn/wp-content/uploads/repos/cas/1d/1d494e8e0d31b078d30d4187a990f06e7c891c9e4fc1b3499c6d8dedecded045.svg)](https://github.com/libtom/libtomcrypt/actions/workflows/main.yml?query=branch%3Amaster+++) [![Coverage Status](https://coveralls.io/repos/libtom/libtomcrypt/badge.png?branch=master)](https://coveralls.io/r/libtom/libtomcrypt) develop: [![Build Status](https://static.pigsec.cn/wp-content/uploads/repos/cas/39/39faa54be350a1dab8afd3b2fb8c1c83e4d9cff84abfef2374d19a18053687c4.svg)](https://github.com/libtom/libtomcrypt/actions/workflows/main.yml?query=branch%3Adevelop+++) [![Coverage Status](https://coveralls.io/repos/libtom/libtomcrypt/badge.png?branch=develop)](https://coveralls.io/r/libtom/libtomcrypt) ### AppVeyor master: [![Build status](https://ci.appveyor.com/api/projects/status/xyl2nbdsyp1tj9ye/branch/master?svg=true)](https://ci.appveyor.com/project/libtom/libtomcrypt/branch/master) develop: [![Build status](https://ci.appveyor.com/api/projects/status/xyl2nbdsyp1tj9ye/branch/develop?svg=true)](https://ci.appveyor.com/project/libtom/libtomcrypt/branch/develop) ### Coverity [![Coverity Scan Build Status](https://scan.coverity.com/projects/487/badge.svg)](https://scan.coverity.com/projects/487) ### ABI 实验室 API/ABI 变更:[点此查看](https://abi-laboratory.pro/tracker/timeline/libtomcrypt/) ## 提交补丁 如果你想提交补丁,请从 develop 分支切出。 如果包含测试和文档,补丁的合并会更快。 请在单独的 commit 中更新 makefile。要更新它们,只需运行 `updatemakes.sh` 脚本。 如果你有更大的内容要提交,请事先与我们联系。 然后我们可以授予你此仓库的写入权限,这样你就可以基于此仓库发起你的 PR 并且我们可以更容易地遵循我们正在使用的 rebase-before-merge(变基后合并)方式(甚至我们自己来进行 rebase)。 ### 审查 我们使用 Pull Request 审查来确保代码与现有的代码库保持一致。 请查看[这里](https://help.github.com/articles/approving-a-pull-request-with-required-reviews/) 以了解相关方法。 ## 分支 请注意,除了 _master_ 和 _develop_ 之外的所有分支 __可能__ 并且 __将会__ 被 force-push、rebase 和/或删除! 如果你想依赖这样一个 _不稳定_ 的分支,请创建你自己的此仓库的 fork,以确保不会对你造成破坏。 ## 配置选项 默认情况下,库会以(取决于你的需求或多或少)最优的方式构建其整个功能集(`katja` 除外)。 如果你想精简库的功能,有许多可用的配置选项。 请查看 `src/headers/tomcrypt_custom.h` 了解所有可用的配置选项。 以下列表是可用选项中的一小部分,但也是最常需要的配置开关。 | Flag | Behavior | | ---- | -------- | | `LTC_NO_TEST` | 从库中删除所有算法自测 | | `LTC_NO_FILE` | 删除所有需要预定义 `FILE` 数据类型的 API 函数(通常对嵌入式目标很有用) | | `GMP_DESC` | 启用 [gmp](https://gmplib.org/) 作为 MPI 提供者 *\*1* | | `LTM_DESC` | 启用 [libtommath](http://www.libtom.net/) 作为 MPI 提供者 *\*1* | | `TFM_DESC` | 启用 [tomsfastmath](http://www.libtom.net/) 作为 MPI 提供者 *\*1* *\*2* | | `USE_GMP` | 构建二进制文件时使用 `gmp` 作为 MPI 提供者 *\*3* | | `USE_LTM` | 构建二进制文件时使用 `libtommath` 作为 MPI 提供者 *\*3* | | `USE_TFM` | 构建二进制文件时使用 `tomsfastmath` 作为 MPI 提供者 *\*3* | *\*1* 可以同时针对所有 MPI 提供者构建库,并在启动时选择要使用的数学库。 *\*2* 请注意,`tomsfastmath` 具有固定 MPI 最大大小的限制。 *\*3* 同一时间只支持一个,且仅在构建二进制文件时需要,在构建库本身时不需要。 ## 构建库 提供了几个 `makefile`。请选择最适合你的一个。 | makefile | 用例 | | -------- | -------- | | `makefile` | 构建静态库(需要 GNU Make) | | `makefile.shared` | 构建共享(及静态)库(需要 GNU Make) | | `makefile.unix` | 用于不常见的 UNIX 平台,或者如果你没有 GNU Make | | `makefile.mingw` | 用于在 MS Windows 上使用 mingw 编译器 | | `makefile.msvc` | 用于在 MS Windows 上使用 MSVC 编译器 | | `libtomcrypt_VS2008.sln` | 一个用于 MS Windows 的 VisualStudio 2008 项目 | ### Make 目标 `makefile` 提供了几个构建目标(不包括 VS 项目)。 以下列表并不声称是完整的,或者说并不保证在所有 `makefile` 变体中都可用。 | target | 应用 | | ------ | ----------- | | *空目标*/未指定 | 参见 `library` | | `library` | 仅构建库 | | `hashsum` | 构建 `hashsum` 二进制文件,类似于 [`shasum`](https://linux.die.net/man/1/shasum),但支持库中包含的所有哈希算法 *\*4* | | `crypt` | 构建 `crypt` 二进制文件,实现类似于 [`crypt`](https://linux.die.net/man/3/crypt) 的功能 *\*4* | | `sizes` | 构建 `sizes` 二进制文件,在调用时打印所有内部数据大小 *\*4* | | `constants` | 构建 `constants` 二进制文件,在调用时打印所有内部常量 *\*4* | | `openssl-enc` | 构建 `openssl-enc` 二进制文件,或多或少与 [`openssl enc`](https://linux.die.net/man/1/enc) 兼容 *\*4* *\*5* | | `test` | 构建 `test` 二进制文件,运行所有算法自测及一些扩展测试 *\*4* | | `timing` | 构建 `timing` 二进制文件,可用于测量算法和模式的耗时 *\*4* | | `bins` | 构建 `hashsum` *\*4* | | `all_test` | 构建 `test`、`hashsum`、`crypt`、`small`、`tv_gen`、`sizes` 和 `constants` *\*4* | | `docs` | 构建开发者文档 `doc/crypt.pdf` | | `install` | 安装 `library` 和头文件 *\*7* *\*8* | | `install_bins` | 安装由 `bins` 目标创建的二进制文件 *\*7* *\*8* | | `install_docs` | 安装由 `docs` 目标创建的文档 *\*7* *\*8* | | `install_test` | 安装由 `test` 目标创建的测试应用 *\*7* *\*8* | | `install_all` | 安装所有内容(即 `library`、`bins`、`docs` 和 `test`) *\*8* | | `uninstall` | 卸载 `library` 和头文件 | *\*4* 也会构建 `library` *\*5* 在某些配置下构建会出错,因此默认不构建 *\*7* 在安装前也会构建必要的构建产物 *\*8* 另请参阅本文件的“安装”章节 ### 示例 你想将库构建为静态库 ``` make ``` 你想将库构建为共享库 ``` make -f makefile.shared ``` 你的系统上已安装 `libtommath`,并希望构建静态库和 `test` 二进制文件以运行自测。 ``` make CFLAGS="-DUSE_LTM -DLTM_DESC" EXTRALIBS="-ltommath" test ``` 你的系统上已安装 `tomsfastmath`,并希望构建共享库和所有二进制文件 ``` make -f makefile.shared CFLAGS="-DUSE_TFM -DTFM_DESC" EXTRALIBS="-ltfm" all demos ``` 你的系统上已安装 `gmp`、`libtommath` 和 `tomsfastmath`,并希望构建静态库和 `timing` 二进制文件以测量针对 `gmp` 的耗时。 ``` make CFLAGS="-DUSE_GMP -DGMP_DESC -DLTM_DESC -DTFM_DESC" EXTRALIBS="-lgmp" timing ``` 如果你的 `libtommath` 位于非标准位置: ``` make CFLAGS="-DUSE_LTM -DLTM_DESC -I/opt/devel/ltm" EXTRALIBS="/opt/devel/ltm/libtommath.a" all ``` 你想启用 AES-NI 支持: ``` make CFLAGS=-DLTC_AES_NI ``` ## 安装 存在几个上述表格中描述的 _install_ make 目标。 这些目标支持标准方式(参见 [[GNU]]、[[FreeBSD]]) 通过以下变量集来修改安装路径: ``` DESTDIR PREFIX LIBPATH INCPATH DATAPATH BINPATH ``` 整个变量集仅在 `makefile`、`makefile.shared` 和 `makefile.unix` 中受支持。 如果你必须使用其他 makefile 之一,请检查该文件以了解支持哪些变量。 ### 示例 你想将静态库安装到默认路径 ``` make install ``` 你想将共享库安装到特定路径并从该路径使用它 ``` make -f makefile.shared PREFIX=/opt/special/path ``` 请查看开发者文档、[[GNU]] 或 [[FreeBSD]] 以获取所有变量的详细说明。 ## CMake 支持 本项目提供对 CMake 构建系统的支持。 ``` git clone https://github.com/libtom/libtomcrypt.git mkdir -p libtomcrypt/build cd libtomcrypt/build cmake .. make -j$(nproc) ``` 有关使用 CMake 构建的更多细节,可以在开发者文档中找到。
标签:Bash脚本, Gophish, 公钥加密, 加密工具包, 哈希函数, 安全意识培训, 客户端加密, 密码学, 开发库, 手动系统调用