# xxblake3
encryption and decryption based on xxh3 and blake3
see [tests/main.rs](https://docs.rs/crate/xxblake3/0.0.1/source/tests/main.rs) for usage
```rust
#include ./tests/main.rs
```
impl code
```rust
#include ./src/lib.rs
```
## step
加密流程 :
1. 校验码 = xxh3::Hash64(原始内容) // seed = 0
1. 流密码 = blake3(校验码+秘钥), 哈希输出长度=内容长度
1. 加密内容 = 原始内容 异或 流密码
1. 加密校验码 = xxh3::Hash64(加密内容+秘钥) 异或 校验码 // seed = 1
1. 输出 = 加密校验码 + 加密内容
解密流程 :
1. 校验码 = xxh3::Hash64(加密内容+秘钥) 异或 加密校验码 // seed = 1
1. 流密码 = blake3(校验码+秘钥), 哈希输出长度=内容长度
1. 解密内容 = 加密内容 异或 流密码
1. 完整性效验 : 计算 xxh3::Hash64(解密内容) == 校验码 // seed = 0