#serde #serialization #encryption #crypto #serializer-deserializer

serde-crypt

端到端加密的 serde::Serializer 和 serde::Deserializer - wasm-ready

5 个版本

0.1.4 2023 年 5 月 1 日
0.1.3 2023 年 4 月 30 日
0.1.2 2023 年 3 月 31 日
0.1.1 2023 年 3 月 31 日
0.1.0 2023 年 3 月 30 日

#1529 in 加密学

Download history 27/week @ 2024-03-08 7/week @ 2024-03-15 8/week @ 2024-03-29 1/week @ 2024-04-05

111 每月下载量
用于 serde-crypt-macro

GPL-3.0-or-later

12KB
162

serde-crypt

Build Status Crate Docs Crate Version Crate Coverage

端到端加密的 serde::Serializerserde::Deserializer. wasm-ready.

示例

use ring::rand::{SecureRandom, SystemRandom};
use serde::{Deserialize, Serialize};
use serde_crypt::setup;

#[derive(Serialize, Deserialize, Debug, PartialEq, Eq)]
struct Example {
    #[serde(with = "serde_crypt")]
    private: String,
    public: String,
}

fn main() -> Result<(), serde_json::Error> {
    let mut key: [u8; 256] = [0; 256];
    let rand_gen = SystemRandom::new();
    rand_gen.fill(&mut key).unwrap();

    setup(key);
    let data = Example {
        private: "private data".to_string(),
        public: "public data".to_string(),
    };

    let serialized = serde_json::to_string(&data)?;
    let deserialized: Example = serde_json::from_str(&serialized)?;

    assert_eq!(deserialized, data);
    Ok(())
}

依赖

~16MB
~387K SLoC