几个开源 RUST 安全算法库

这篇具有很好参考价值的文章主要介绍了几个开源 RUST 安全算法库。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

这段时间把 RUST 语法过了一遍,写一些简单的 Demo 程序没啥问题了,但离掌握这门语言还差的远,需要项目实战才行。我决定从之前研究过的国密算法入手,使用 RUST 实现国密算法。

从头编写算法不太现实,上网搜了一下,还好已经有一些 开源 RUST 安全算法库,基于现有的开源代码实现更加可行。下面就介绍一下 RUST 加解密库,并选择一个项目作为基础,实现国密算法。

Sodiumoxide

项目地址:https://github.com/sodiumoxide/sodiumoxide

目前项目标记为 [DEPRECATED] , 不再维护。Sodiumoxide 并不是纯 RUST 编写,而是 C 密码库 libsodium 的 Rust 封装,而 libsodium 又是 fork C 密码库NaCl 而来,因此 Sodiumoxide 的大多数文档来源于 NaCl 。

Sodiumoxide 实现的算法有:

  • 对称加密算法

    • 验证加密:aes256gcm, chacha20poly1305

    • 密钥生成:blake2b

    • 密钥交换:x25519blake2b

  • 非对称加密算法

    • curve25519xsalsa20poly1305

  • HMAC:hmacsha256/512

  • HASH:SipHasher13,SHA256/512

Ring

项目地址:https://github.com/briansmith/ring

Ring 采用混合语言编写,包括 Rust、C和汇编语言。Ring 采用轻量设计,小巧但功能全面,特别适用于小型设备、微控制器和IoT应用。

Ring实现的算法有:

  • 对称加密算法

    • 验证加密:aes128/256gcm, chacha20poly1305

    • 密钥生成:HKDF_SHA256/384/512,PBKDF2_HMAC_SHA1,PBKDF2_HMAC_SHA256/384/512

  • 非对称加密算法

    • 数字签名:ECDSA(P-256 Curve)+ SHA256/384,ED25519,RSA_PKCS1_SHA1/256/384/512,RSA_PSS_SHA256/384/512

  • HMAC:HMACSHA256/384/512

  • HASH:SHA1, SHA256/384/512

Dalek

项目地址:https://github.com/dalek-cryptography

Dalek 使用 RUST 语言编写,实际上是一个在 github 上的 RUST 库集合。

几个开源 RUST 安全算法库

Dalek 专注于椭圆曲线相关的算法 RUST 实现, 实现的椭圆曲线相关算法有:

  • X25519

  • Curve25519

  • ED25519

rust-crypto

项目地址:https://github.com/RustCrypto

rust-crypto是一个大集合体,整合了大部分密码学需要使用的模块。

rust-crypto涉及到的算法有:

  • 对称加密算法

    • 模式:CFB,CTR, OFB

    • 算法:chacha20, rabbit, salsa20, hc256

    • 验证加密:aesgcm, aessiv, ccm, chacha20poly1305, xsalsa20poly1305, deoxys, eax, mgm

    • 密钥生成:Argon2, bcrypt, PBKDF2, scrypt, SHA-crypt

    • 加解密:

  • 非对称加密算法

    • 数字签名:ECDSA,ED25519

    • 椭圆曲线:BP256/384, k256, P-256/384

  • HMAC:HMACSHA256/384/512

  • HASH:SHA1, SHA256/384/512, blake2, FSB, MD系列, gost94, groestl, k12, ripemd160/256/320, shabal, SM3

Rustls

项目地址:https://github.com/rustls/rustls

Rustls 是一个 Rust TLS 库,底层使用 ring ,目标是为 TLS 1.2 或更高版本提供安全功能和组件,号称效率比 OpenSSL 更高。

Rustls支持的算法和协议有:

  • TLS1.2 和 TLS1.3。

  • 客户端发起的 ECDSA、Ed25519 或 RSA 服务器端身份验证。

  • 服务器发起的 ECDSA、Ed25519 或 RSA 服务器端身份验证。

  • 使用 curve25519、nistp256 或 nistp384 曲线的 ECDHE 前向保密。

  • 使用安全随机数的 AES128-GCM 和 AES256-GCM 批量加密。

  • ChaCha20-Poly1305 批量加密 (RFC7905)。

  • ALPN 支持。

  • SNI 支持。

  • 可调片段大小,使 TLS 消息匹配底层传输的大小。

  • 可选地使用矢量 IO 来最小化系统调用。

  • TLS1.2 会话恢复。

  • 通过票证 (RFC5077) 恢复 TLS1.2。

  • TLS1.3 通过票据或会话存储恢复。

  • 客户端的 TLS1.3 0-RTT 数据。

  • 服务器的 TLS1.3 0-RTT 数据。

  • 由客户端进行客户端身份验证。

  • 服务器端进行客户端身份验证。

  • 扩展的主密钥支持 (RFC7627)。

  • 导出器 (RFC5705)。

  • 服务器端装订 OCSP。

  • 服务器端 SCT 装订。

  • 客户端的 SCT 验证。

rust-openssl

项目地址:https://github.com/sfackler/rust-openssl

这个项目为流行的 OpenSSL 加密库提供了一个安全的接口。支持 OpenSSL 版本 1.0.1 到 3.x.x,此外还支持 LibreSSL 版本 2.5 到 3.4.1。

该项目被指出代码质量不好,并且缺少文档。


上述库中,Sodiumoxide、Rustls、rust-openssl 只是其他库的封装,要增加国密支持,只能修改所封装的库,不予考虑。ring 则存在大量的汇编代码和 C 代码 ,不便于后期维护和开发,不太合适在上面进行开发。Dalek 实现的算法太少,很多常见加解密算法都没实现,放弃。rust-crypto 由纯 RUST 实现,加解密算法完善,基于 rust-crypto 实现国密算法比较合适。文章来源地址https://www.toymoban.com/news/detail-444618.html

到了这里,关于几个开源 RUST 安全算法库的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 搜索引擎语法大全,你知道几个?

    网络安全重磅福利:入门进阶全套282G学习资源包免费分享! 基本语法 1、define 搜索某个词的定义 例如: 搜索:define:38.5,将返回关于“38.5”的定义。 2、define 搜索某个词的定义 例如: 搜索:define:38.5,将返回关于“38.5”的定义。 网络安全重磅福利:入门进阶全套282G学习资源包

    2024年02月03日
    浏览(50)
  • rust教程 第二章 —— rust基础语法详解

    首先要讲解的便是变量,如果你有其它语言基础,相信还是比较好理解的 我们的电脑中,很重要的一个性能指标便是内存大小,而所有的程序便是运行在内存中的: 而变量,就是在这个内存中,申请一块属于自己可以调度的内存块,有了这块内存,我们就能用它来计算、存

    2023年04月25日
    浏览(52)
  • 20天学会rust(二)rust的基础语法篇

    在第一节(20天学rust(一)和rust say hi)我们配置好了 rust 的环境,并且运行了一个简单的demo—— practice-01 ,接下来我们将从示例入手,学习 rust 的基础语法。 首先来看下项目结构: 项目结构 项目的重点文件有两个: Cargo.toml 文件和 main.rs 。我们首先来看下 practice-01 的

    2024年02月14日
    浏览(34)
  • Rust 基础语法学习

    rust中的程序从main函数作为入口,hello rust! 使用let定义变量: rust是强类型的,但声明是可以不写明类型,会自动推导类型。 如果要加入数据类型,也可以使用下面方式: 整数类型 按照比特位长度和有无符号分类: bit-length unsigned signed 8 u8 i8 16 u16 i16 32 u32 i32 64 u64 i

    2024年02月10日
    浏览(35)
  • Rust 基础语法

    变量,基本类型,函数,注释和控制流,这些几乎是每种编程语言都具有的编程概念。 这些基础概念将存在于每个 Rust 程序中,及早学习它们将使你以最快的速度学习 Rust 的使用。 变量 首先必须说明,Rust 是强类型语言,但具有自动判断变量类型的能力。这很容易让人与弱

    2024年02月09日
    浏览(40)
  • Rust基础语法1

        所有权转移,Rust中没有垃圾收集器,使用所有权规则确保内存安全,所有权规则如下:     1、每个值在Rust中都有一个被称为其所有者(owner)的变量,值在任何时候只能有一个所有者。     2、当所有者离开作用域,这个值将被丢弃。     3、所有权的转移时零成本的,

    2024年01月20日
    浏览(37)
  • 【Rust】003-基础语法:流程控制

    控制流是编程语言的一个重要概念。程序员通过控制流可以控制哪些代码要执行。在Rust中,最常见的两种控制流结构是 if 表达式和循环。 这里的 condition 必须是 bool 类型 正如这一小节的标题所说, if 其实是一个表达式,具有返回值。 需要注意的是, if 分支和 else 分支的返

    2024年02月09日
    浏览(40)
  • Rust语法: 枚举,泛型,trait

    这是我学习Rust的笔记,本文适合于有一定高级语言基础的开发者看不适合刚入门编程的人,对于一些概念像枚举,泛型等,不会再做解释,只写在Rust中怎么用。 枚举的定义与赋值 枚举的定义格式如下: enum 枚举名{ 值1(附加类型), 值2(附加类型),… } 其中,关联类型可以省去

    2024年02月13日
    浏览(39)
  • Rust语法:所有权&引用&生命周期

    垃圾回收管理内存 Python,Java这类语言在管理内存时引用了一种叫做垃圾回收的技术,这种技术会为每个变量设置一个引用计数器(reference counter),来统计每个对象的引用次数。 一旦某个对象的引用数为0,垃圾回收器就会择取一个时机将其所占用的空间回收。 以Python为例子

    2024年02月12日
    浏览(55)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包