5 个版本
0.2.0 | 2024 年 4 月 23 日 |
---|---|
0.1.3 | 2024 年 1 月 30 日 |
0.1.2 | 2024 年 1 月 10 日 |
0.1.1 | 2024 年 1 月 10 日 |
0.1.0 | 2024 年 1 月 10 日 |
#387 in 加密学
309 每月下载量
用于 rustls-symcrypt
225KB
5.5K SLoC
SymCrypt Rust 包装器
此包提供了对开源加密库 SymCrypt 的友好且自然的 Rust 包装器。
此包依赖于 symcrypt-sys
,它使用 bindgen
创建 Rust/C FFI 绑定。
注意:从版本 0.2.0
开始,仅支持 Windows AMD64
和 Azure Linux
,对其他 Linux 发行版(如 Ubuntu
)提供部分支持。
快速入门指南
Windows
从 SymCrypt 发布页面 下载对应 CPU 架构的 symcrypt.dll
和 symcrypt.lib
,并将它们放置在您的计算机上的一个可访问位置。
设置所需的 SYMCRYPT_LIB_PATH
环境变量。您可以使用以下命令完成此操作
setxSYMCRYPT_LIB_PATH "<your-path-to-symcrypt-lib-folder>"
在运行时,Windows 将处理查找所有必需的 dll
,以运行目标程序,包括我们的 symcrypt.dll
文件。
以下是两个推荐选项,以确保在运行时 Windows 可以找到您的 symcrypt.dll
,更多信息请参阅 动态链接库搜索顺序。
- 将
symcrypt.dll
放在与您的输出.exe
文件相同的文件夹中。如果您正在进行开发(而非发布),常见的路径将是:C:\your-project\target\debug\
。 - 永久地将
symcrypt.dll
路径添加到您的系统 PATH 环境变量中。这样做将确保任何使用 SymCrypt crate 的项目都能访问到symcrypt.lib
有关更多信息,请参阅 rust-symcrypt
页面上的 INSTALL.md
文件。
Linux
从 SymCrypt 发布页面下载与您对应的 CPU 架构对应的所有 libsymcrypt.so*
文件。
目前通过软件包管理器支持 Debian
和 Ubuntu
,但现在您必须将 libsymcrypt.so*
文件放入链接器加载路径。这种方式在不同的发行版之间会有所不同。在大多数发行版中,它通过环境变量 $LD_LIBRARY_PATH
如果您通过 Azure Linux
使用 tdnf install symcrypt
,则已提供软件包管理器支持。
有关更多信息,请参阅 rust-symcrypt
页面上的 INSTALL.md
文件。
注意:这个路径可能因您的 Linux 发行版而异。目标是放置 libsymcrypt.so*
文件,以便您的 Linux 发行版在构建/运行时可以找到所需的库。
支持的 API
哈希
- Sha256 ( 状态/无状态 )
- Sha384 ( 状态/无状态 )
HMAC
- HmacSha256 ( 状态/无状态 )
- HmacSha384 ( 状态/无状态 )
GCM
- 加密 ( 原地 )
- 解密 ( 原地 )
ChaCha
- 加密 ( 原地 )
- 解密 ( 原地 )
ECDH
- ECDH 秘密协议
用法
每个文件都附带单元测试,展示了如何使用每个函数。其中包含一些示例代码,用于执行无状态的 Sha256 哈希。必须在调用底层的 symcrypt 代码之前运行 symcrypt_init()
。
注意:此代码片段还使用了 hex crate。
说明
将 symcrypt 添加到您的 Cargo.toml
文件中。
[dependencies]
symcrypt = "0.2.0"
hex = "0.4.3"
在您的代码中包含 symcrypt
use symcrypt::hash::sha256;
use symcrypt::symcrypt_init();
use hex;
fn main() {
symcrpyt_init();
let data = hex::decode("641ec2cf711e").unwrap();
let expected: &str = "cfdbd6c9acf9842ce04e8e6a0421838f858559cf22d2ea8a38bd07d5e4692233";
let result = sha256(&data);
assert_eq!(hex::encode(result), expected);
}
依赖项
~52KB