Sodium一个易于使用的可为我们提供加密、解密、签名,密码哈希等功能的软件库。除了自身强大的功能外,它还为我们提供了一个兼容API和一个外部API,以进一步的帮助我们提高其可用性。Sodium的目标是提供构建更高级别加密工具所需的所有核心操作。

Sodium:一个提供加密、解密、签名等功能的软件库-浩海云安全中心

Sodium支持跨平台和跨语言, 你可以在各种编译器和操作系统上运行它,包括Windows(使用MinGW或Visual Studio,x86和x86_64),iOS和Android。Javascript和WebAssembly版本也可用并受到完全的支持。

值得一提的是,虽然Sodium的设计着重高安全和易用性,但其整体速度与大多数实现相比更快。

一、libsodium下载

Github

Tarballs 和 预编译二进制文件

​在线文档

二、离线文档

该文档可下载保存为ePUB文件格式(适用于iPad,iPhone,Mac),MOBI(适用于Kindle)以及PDF:https://www.gitbook.com/book/jedisct1/libsodium/details​

三、安装

3.1 在类Unix系统上编译安装

Sodium是一个共享库具有独立于机器的标头集,因此可以轻松地被第三方项目所使用。

该库使用autotools构建,因此非常易于打包。

安装也很简单,编译和测试都可利用多个CPU内核。

首先我们下载libsodium,然后执行以下命令:

./configure
make && make check
sudo make install

由于不同的文件被编译用于不同的CPU类,并且为了防止不必要的优化,因此建议尽量避免链接时优化(LTO)。

在Linux上,如果进程在make check步骤中挂起,则系统PRG可能没有正确播种。有关解决此问题的方法,请参阅“使用”部分中的说明。

3.2 在Windows系统上编译安装

通常不需要在Windows上进行编译,因为MinGW和Visual Studio的预构建库是可用的(参见下文)。

但是,如果你想自己编译,先从Git存储库克隆稳定分支

然后可以在builds/msvc目录中找到Visual Studio的解决方案。

要使用mingw进行编译,请在win32或x64目标上运行/dist build/msys2-win32.sh或/dist build/msys2-win64.sh脚本。

3.3 预构建库

提供了可用于Visual Studio 2010,2012,2013,2015和2017的预构建x86和x86_64库,以及MinGW32和MinGW64的预构建库。包括头文件,以及所有受支持编译器版本的静态(.LIB)和共享(.DLL)库。

Visual Studio注意事项:

静态链接Sodium的项目必须定义一个名为SODIUM_STATIC的宏,这将防止符号定义被__dllexport引用。

3.4 交叉编译

支持交叉编译。以下是使用ARM嵌入式处理器的GNU工具交叉编译到ARM的示例

export PATH=/path/to/gcc-arm-none-eabi/bin:$PATH
export LDFLAGS='--specs=nosys.specs'
export CFLAGS='-Os'
./configure --host=arm-none-eabi --prefix=/install/path
make install 

make check也可以构建测试应用程序,但必须在本地平台上运行。

注意:–specs=nosys.specs仅用于ARM编译工具链。

3.5 使用CompCert编译

最新发布版可使用CompCert编译器进行编译。编译命令如下:

$ env CC=ccomp CFLAGS="-O2 -fstruct-passing -Usize_t" ./configure && \
make check && sudo make install

3.6 稳定分支

这里我们建议大家使用tarball来克隆libsodium git存储库,因为tarball不需要libtool和autotools等依赖项,其次就是使用稳定分支下的版本。

获取稳定分支中的最新版:

git clone https://github.com/jedisct1/libsodium --branch stable

四、使用入门

请参阅快速开始使用部分。