加解密库-libsodium


libsodium 是一个先进而且易用的加密库。主要用于加密、解密、签名和生成密码哈希等等。这是一个可移植的、跨编译器支持、可安装的,基于 NaCI 开发并提供一个兼容 API。采用C语言实现并在ISC协议下授权。
Sodium is a new, easy-to-use software library for encryption, decryption, signatures, password hashing and more.

It is a portable, cross-compilable, installable, packageable fork of NaCl, with a compatible API, and an extended API to improve usability even further.
Its goal is to provide all of the core operations needed to build higher-level cryptographic tools. Supports a variety of compilers and operating systems, including Windows (with MingW or Visual Studio, x86 and x64), iOS, Android, as well as Javascript and Webassembly.
最新版本:1.0
1.0.19 现已于2023年9月中旬发布。此版本包含 1.0.18-stable 的所有更改,以及两项新增内容:
New AEADs:crypto_aead_aegis128l_*() 和 crypto_aead_aegis256_*() 命名空间中新增了 AEGIS-128L 和 AEGIS-256。AEGIS 是面向高性能应用的认证密码系列,利用 x86_64 和 aarch64 上的硬件 AES 加速。除性能外,AEGIS 密码还具有独特的特性,使其比 AES-GCM 更易于使用,也更安全。它们还可用作高性能 MAC。
crypto_kdf_hkdf_*() 命名空间现在提供了许多标准协议所需的 HKDF 密钥生成机制。它是针对 SHA-256 和 SHA-512 哈希函数实现的。
osx.sh 构建脚本已重命名为 macos.sh
删除了对 android-mips 的支持。
From 1.0.18-stable:
Visual Studio:添加了对 Windows/ARM64 builds 的支持。
Visual Studio:在支持的 CPU 上启用了 AVX512 实现。
Visual Studio:添加了 MSVC 2022 解决方案。
Apple XCFramework:添加了对 VisionOS 的支持。
Apple XCFranework:添加了对 Catalyst 的支持。
Apple XCFramework:构建模拟器现在是可选的。
iOS:不再生成 bitcode,因为它已被 Apple 弃用。
watchOS:添加了对 arm64 的支持。
Zig 工具链现在可以用作现代构建系统来替换 autoconf/automake/libtool/make/ccache 和编译器。这可以实现更快的编译时间、更轻松的交叉编译以及针对任何 CPU 进行优化的静态库。
Zig 工具链现在是将 libsodium 编译为 WebAssembly/WASI (X) 的推荐方法。
libsodium 现在可以作为 Zig 项目的依赖项添加。
AES-GCM 实现被完全重写。现在它速度更快,并且也可在 aarch64 上使用,包括 Windows/ARM64。
新增了与 CET instrumentation / IBT / Shadow Stack 的兼容性。
Emscripten:已从 Sumo builds 中删除 crypto_pwhash_*() 函数,因为它们即使在未使用时也会占用大量 JavaScript 内存。
基准测试现在尽可能使用 CLOCK_MONOTONIC。
WebAssembly:现在可以使用 Bun、WasmEdge、Wazero、wasm3 和 wasmer-js 运行测试。对 WAVM 和 Lucet 的支持已被删除,因为这些项目已达到 EOL。
.NET:支持的最低 macOS 版本现在为 1.0.15。
.NET:所有包现在都是在所有平台上使用 Zig 构建的。
.NET:ARM64 的软件包现在可用。
C23memset_explicit() 现在可用。
编译时默认使用 -Ofast 或 -O3 而非 -O2。
可移植性改进有助于将 libsodium 编译到现代游戏机。
JavaScript:不再设置默认的 unhandledRejection 处理程序。
略微加快 25519 操作速度。
OpenBSD:leverageMAP_CONCEAL。
v1.0.20 现已于2024年6月下旬发布,包含自 1.0.19-stable 以来的所有更改,主要解决编译问题和对 .NET 包的改进,主要的更新内容如下:
Building withzig build 现在需要 Zig 0.12。
使用传统的 build system 时,使用 -O3 而不是 -Ofast。
改进了 aarch64 上所需的编译器标志的检测。
提高了与 aarch64 上自定义构建系统的兼容性。
apple-xcframework:如果 Xcode 不包含该 SDK,则不会构建 VisionOS 包。
添加了 crypto_kdf_hkdf_sha512_statebytes()。
使用 Visual Studio 时,现在在 Windows/aarch64 上启用运行时 CPU 功能检测。
在 Windows 上使用 Swift 时,C++ guards 存在影响 libsodium 使用的问题。此问题现已修复。
Emscripten:crypto_aead_aegis*() 函数现在可以在 JavaScript 构建中导出
Emscripten:不支持的 --memory-init-file 选项已被删除。
apple-xcframework:最小部署目标可以设置为 iOS 11+。
.NET 软件包现在包括适用于 Windows/arm64、iOS、TvOS 和 Catalyst 的预编译库。
.NET 预编译库现在可以在任何 CPU 上运行,仅使用 runtime feature 检测。
SYSV 程序集不应在针对 Windows 时使用。
已解决与 LLVM 18 和 AVX512 的兼容性问题。
GitHub attestation build provenance 现已添加到 NuGet 包中。
JavaScript 测试现在可以使用 Bun 作为 Node 的替代品。
详情可查看更新说明。
项目主页:https://github.com/jedisct1/libsodium
Sodium is a new, easy-to-use software library for encryption, decryption, signatures, password hashing and more.

It is a portable, cross-compilable, installable, packageable fork of NaCl, with a compatible API, and an extended API to improve usability even further.
Its goal is to provide all of the core operations needed to build higher-level cryptographic tools. Supports a variety of compilers and operating systems, including Windows (with MingW or Visual Studio, x86 and x64), iOS, Android, as well as Javascript and Webassembly.
最新版本:1.0
1.0.19 现已于2023年9月中旬发布。此版本包含 1.0.18-stable 的所有更改,以及两项新增内容:
New AEADs:crypto_aead_aegis128l_*() 和 crypto_aead_aegis256_*() 命名空间中新增了 AEGIS-128L 和 AEGIS-256。AEGIS 是面向高性能应用的认证密码系列,利用 x86_64 和 aarch64 上的硬件 AES 加速。除性能外,AEGIS 密码还具有独特的特性,使其比 AES-GCM 更易于使用,也更安全。它们还可用作高性能 MAC。
crypto_kdf_hkdf_*() 命名空间现在提供了许多标准协议所需的 HKDF 密钥生成机制。它是针对 SHA-256 和 SHA-512 哈希函数实现的。
osx.sh 构建脚本已重命名为 macos.sh
删除了对 android-mips 的支持。
From 1.0.18-stable:
Visual Studio:添加了对 Windows/ARM64 builds 的支持。
Visual Studio:在支持的 CPU 上启用了 AVX512 实现。
Visual Studio:添加了 MSVC 2022 解决方案。
Apple XCFramework:添加了对 VisionOS 的支持。
Apple XCFranework:添加了对 Catalyst 的支持。
Apple XCFramework:构建模拟器现在是可选的。
iOS:不再生成 bitcode,因为它已被 Apple 弃用。
watchOS:添加了对 arm64 的支持。
Zig 工具链现在可以用作现代构建系统来替换 autoconf/automake/libtool/make/ccache 和编译器。这可以实现更快的编译时间、更轻松的交叉编译以及针对任何 CPU 进行优化的静态库。
Zig 工具链现在是将 libsodium 编译为 WebAssembly/WASI (X) 的推荐方法。
libsodium 现在可以作为 Zig 项目的依赖项添加。
AES-GCM 实现被完全重写。现在它速度更快,并且也可在 aarch64 上使用,包括 Windows/ARM64。
新增了与 CET instrumentation / IBT / Shadow Stack 的兼容性。
Emscripten:已从 Sumo builds 中删除 crypto_pwhash_*() 函数,因为它们即使在未使用时也会占用大量 JavaScript 内存。
基准测试现在尽可能使用 CLOCK_MONOTONIC。
WebAssembly:现在可以使用 Bun、WasmEdge、Wazero、wasm3 和 wasmer-js 运行测试。对 WAVM 和 Lucet 的支持已被删除,因为这些项目已达到 EOL。
.NET:支持的最低 macOS 版本现在为 1.0.15。
.NET:所有包现在都是在所有平台上使用 Zig 构建的。
.NET:ARM64 的软件包现在可用。
C23memset_explicit() 现在可用。
编译时默认使用 -Ofast 或 -O3 而非 -O2。
可移植性改进有助于将 libsodium 编译到现代游戏机。
JavaScript:不再设置默认的 unhandledRejection 处理程序。
略微加快 25519 操作速度。
OpenBSD:leverageMAP_CONCEAL。
v1.0.20 现已于2024年6月下旬发布,包含自 1.0.19-stable 以来的所有更改,主要解决编译问题和对 .NET 包的改进,主要的更新内容如下:
Building withzig build 现在需要 Zig 0.12。
使用传统的 build system 时,使用 -O3 而不是 -Ofast。
改进了 aarch64 上所需的编译器标志的检测。
提高了与 aarch64 上自定义构建系统的兼容性。
apple-xcframework:如果 Xcode 不包含该 SDK,则不会构建 VisionOS 包。
添加了 crypto_kdf_hkdf_sha512_statebytes()。
使用 Visual Studio 时,现在在 Windows/aarch64 上启用运行时 CPU 功能检测。
在 Windows 上使用 Swift 时,C++ guards 存在影响 libsodium 使用的问题。此问题现已修复。
Emscripten:crypto_aead_aegis*() 函数现在可以在 JavaScript 构建中导出
Emscripten:不支持的 --memory-init-file 选项已被删除。
apple-xcframework:最小部署目标可以设置为 iOS 11+。
.NET 软件包现在包括适用于 Windows/arm64、iOS、TvOS 和 Catalyst 的预编译库。
.NET 预编译库现在可以在任何 CPU 上运行,仅使用 runtime feature 检测。
SYSV 程序集不应在针对 Windows 时使用。
已解决与 LLVM 18 和 AVX512 的兼容性问题。
GitHub attestation build provenance 现已添加到 NuGet 包中。
JavaScript 测试现在可以使用 Bun 作为 Node 的替代品。
详情可查看更新说明。
项目主页:https://github.com/jedisct1/libsodium