21 个稳定版本 (4 个主要版本)
4.3.5 | 2024年5月24日 |
---|---|
4.2.0 | 2024年1月19日 |
3.1.0 | 2023年1月1日 |
3.0.3 | 2022年12月6日 |
0.1.0 | 2021年9月23日 |
#402 在 密码学
1,547 每月下载量
在 6 crates 中使用
79KB
1.5K SLoC
信德
信德是一个密码原语库。
作者
特性
- 数字签名算法
- 哈希
- 公钥交换
- 数据结构,如 Bloom 过滤器和 Radix 树
数字签名算法
ed25519
secret_key->secret_key
public_key:secret_key->public_key
sign:message,secret_key->signature
verify:message,public_key,signature-> bool
公钥交换
x25519
secret_key->secret_key
public_key:secret_key->public_key
shared_key:public_key,secret_key->shared_secret
数据结构
Bloom 过滤器
Radix 树
结构体
RadixTree<K, V>
: 代表基数树,通配符 K
为键和 V
为值。
nodes
:HashMap
存储树节点,每个节点由一个32字节数组标识。parents
:HashMap
跟踪每个节点的父节点。root
: 代表根节点的32字节数组。
RadixNode<K, V>
: 代表 RadixTree
内的单个节点。
children
:BTreeMap
将键映射到子节点散列。key
:Vec<K>
代表节点的键。value
: 可选的V
持有与键关联的值。
方法
new() -> Self
: 创建一个 RadixTree
的新实例。
insert<I>(&mut self, key: I, value: V)
: 在树中插入键值对。
rehash(&mut self, child_hash: &[u8; 32])
: 更新子节点的哈希。
remove<I>(&mut self, key: I) -> Result<(), Box<dyn Error>>
: 移除键值对。
search<I>(&self, key: I) -> Option<&V>
: 通过键搜索值。
split_node(&mut self, node_hash: [u8; 32], split_position: usize) -> Result<([u8; 32], [u8; 32]), Box<dyn Error>>
: 在指定位置分割节点。
特质
IntoBytes: 提供将RadixTree和RadixNode序列化为字节数据的功能。
- 对于RadixNode<K, V>
into_bytes(&self) -> Vec<u8>
: 将RadixNode序列化为字节数组。这包括序列化子节点、键和值字段。
- 对于RadixTree<K, V>
into_bytes(&self) -> Vec<u8>
:将整个RadixTree序列化为字节数组。这个过程涉及将根节点和节点中的每个节点(使用RadixNode的into_bytes方法)进行序列化。
默克尔树
结构体
MerkleTree<T>
:表示默克尔树,T为每个节点中存储的数据的泛型。
nodes
:存储树节点的HashMap<[u8; 32], MerkleNode<T>>
,每个节点由一个32字节数组标识。root
:表示根节点的[u8; 32]
。parents
:跟踪每个节点的父节点的HashMap<[u8; 32], [u8; 32]>
。
方法
new()
:创建MerkleTree的新实例。
hash(&self)
:返回默克尔树的根。
append(mut self, data: T)
:将数据附加到默克尔树。
replace(mut self, index: usize, data: T)
:替换默克尔树中指定索引的数据。
特质
IntoBytes:提供将MerkleTree和MerkleNode序列化为字节的功能。
- 对于MerkleTree:
into_bytes(&self) -> Vec<u8>
- 对于MerkleNode:
into_bytes(&self) -> Vec<u8>
TryFromBytes:提供从字节中反序列化MerkleTree和MerkleNode的功能。
- 对于Merkle树:
try_from_bytes(value: &[u8]) -> Result<Self, Box<dyn Error>>
- 对于Merkle节点:
try_from_bytes(value: &[u8]) -> Result<Self, Box<dyn Error>>
未来
- 🎲 随机数生成器
- 🔒 加密
- 🏗 累积
- 📜 承诺方案
- 😎 零知识证明方案
- ⏲ 可验证延迟函数
- 🔢 全同态加密
许可证
MIT许可证
版权属于Stelar Labs
特此授予任何获得本软件及其相关文档副本(以下简称“软件”)的人免费使用权,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售软件副本的权利,并允许将软件提供给他人,以便他们可以这样做,前提是遵守以下条件:
上述版权声明和本许可声明应包含在软件的任何副本或主要部分中。
免责声明
软件按“原样”提供,不提供任何形式的保证,无论是明示的、暗示的还是与适用性、特定用途和侵权相关的保证。在任何情况下,作者或版权所有者均不对任何索赔、损害或其他责任承担责任,无论这些责任是因合同行为、侵权或其他行为引起的,无论是与软件、软件的使用或其他方式相关还是由此产生的。
依赖项
~7MB
~125K SLoC