1 个不稳定版本
0.0.0 | 2022年1月6日 |
---|
#13 in #django
13KB
262 行(不包括注释)
django-signing-rust
该软件包实现了 Django 的字符串和对象加密签名功能,适用于 Rust。
use serde::{Deserialize, Serialize};
use django_signing;
const SECRET: &[u8] = b"my-secret-key";
const SALT: &[u8] = b"demo-salt";
#[derive(Debug, Serialize, Deserialize)]
struct Book {
title: String,
author: String,
year: u16,
}
let book = Book {
title: String::from("The Lord of the Rings"),
author: String::from("J. R. R. Tolkien"),
year: 1954,
};
let signed = django_signing::dumps(book, SECRET, SALT, true);
println!("Signed value: {}", signed);
// This prints something like:
// Signed value: eyJ0aXRsZSI6IlRoZSBMb3JkIG9mIHRoZSBSaW5ncyIsImF1dGhvciI6IkouIFIuIFIuIFRvbGtpZW4iLCJ5ZWFyIjoxOTU0fQ:1n5aMt:Q7rI7rBXrLmMFsxLPnkiLl1GCr_ygqsM0nHBkazgvYc
let unsigned: Book = django_signing::loads(
signed, SECRET, SALT,
// Signature expires after 60 seconds
django_signing::Duration::new(60, 0)
).unwrap();
println!("Unsigned value: {:?}", unsigned);
// This prints:
// Unsigned value: Book { title: "The Lord of the Rings", author: "J. R. R. Tolkien", year: 1954 }
还可以访问与 Django 的 Signer
和 TimestampSigner
类相关的 BaseSigner
和 TimestampSigner
结构体。
由于 SHA-1 在当今通常不是一个好主意,因此该库仅支持 SHA-256。
依赖项
约2.5MB
约51K SLoC