摘要: Rust源码组织结构 liballoc 内存分配库, 标准库中涉及到堆内存分配相关的代码在此; alloc: 全局内存分配器Global(实现了AllocReftrait), 及内存分配相关的函数alloc/realloc/dealloc/alloc_zeroed的实现(他们是对libcore库中的 阅读全文
posted @ 2020-08-09 18:28 mengsuenyan 阅读(1482) 评论(1) 推荐(0) 编辑
摘要: Rust Borrow和AsRef的区别 AsRef/AsRefMut和Borrow/BorrowMut具有相似的借语义, 但他们有如下的不同; 任何类型T都实现了(blanket impl)Borrowtrait, 即Rust中任何实例都是可以被借用(&/&mut)的(当然这里任何是指满足语法语义 阅读全文
posted @ 2020-07-16 22:50 mengsuenyan 阅读(2718) 评论(0) 推荐(0) 编辑
摘要: Raft一致性算法 Raft一致性算法 前要说明 为了便于理解和实现, Raft算法将集群中多台服务器之间一致性问题分解为: Leader选举, 日志复制和安全这几个子问题; 记有集群${C_i,\ i=1,2\dots m}$, 角色集$R={Leader, Candidate, Follower 阅读全文
posted @ 2020-07-09 16:04 mengsuenyan 阅读(318) 评论(0) 推荐(0) 编辑
摘要: SM3哈希算法 Rust实现 简要说明 消息长度(bits) 块大小(bits) 单词长度(bits) 消息摘要长度(bits) SM3 \(\lt 2^{64}\) 512 32 256 算法流程 位填充 记有消息$M$(位长度为$l$), 首先在消息尾补一个比特位0b1, 然后补$k$个比特位0 阅读全文
posted @ 2020-06-23 17:54 mengsuenyan 阅读(6549) 评论(0) 推荐(0) 编辑
摘要: SHA3 基于置换的哈希和可扩展输出函数 Rust实现 Hash 记有消息$M$, SHA-3定义如下: \[ \begin{aligned} & SHA3-224(M) = Keccak[448](M || 01, 224) \\ & SHA3-256(M) = Keccak[512](M || 阅读全文
posted @ 2020-06-23 16:26 mengsuenyan 阅读(532) 评论(0) 推荐(0) 编辑
摘要: ECC, ECDSA, ECIES 阅读全文
posted @ 2020-06-18 23:27 mengsuenyan 阅读(774) 评论(0) 推荐(0) 编辑
摘要: KDF(Key Derivation Function) 阅读全文
posted @ 2020-06-18 21:45 mengsuenyan 阅读(5134) 评论(0) 推荐(0) 编辑
摘要: 椭圆加密数学基础 Rust实现 有限群 记有一个集合$S$, 及定义在$S$上的满足如下性质的二元运算$\oplus$, 则$(S,\oplus)$称为群: 封闭性: 对$\forall a, b\in S$, 有$a\oplus b \in S$. 单位元: 存在一个唯一的元素$e \in S$, 阅读全文
posted @ 2020-06-18 10:37 mengsuenyan 阅读(908) 评论(0) 推荐(0) 编辑
摘要: Rust memory ordering 阅读全文
posted @ 2020-06-04 15:11 mengsuenyan 阅读(1610) 评论(0) 推荐(0) 编辑
摘要: 数论相关 相关概念 记有群$(S, \oplus)$, 为了方便简记为$S$; 群的定义见椭圆曲线加密数学基础; 群的阶$#S$: 群中元素的个数; \(a\in S\), 记$a$生成的子群为$\langle a \rangle$, 生成过程为: \(\{a^{(k)}=\oplus_{i=1}^ 阅读全文
posted @ 2020-05-27 00:00 mengsuenyan 阅读(276) 评论(0) 推荐(0) 编辑