29个稳定版本
1.1.0 |
|
---|---|
1.0.28 | 2023年9月11日 |
1.0.27 | 2022年11月4日 |
1.0.26 | 2022年3月19日 |
1.0.6 | 2018年11月16日 |
在密码学类目中排名#300
254次每月下载
在10个crate(4直接)中使用
22KB
376 行
ShortCrypt
ShortCrypt是一个非常简单的加密库,旨在将任何数据加密成看起来随机的数据。即使这些数据相似,加密后的数据仍然非常不同。最重要的是,密文比明文仅大4位,因此适用于URL或QR码中使用的数据。除此之外,它也是序列号生成的理想选择。
示例
encrypt
方法可以创建一个包含密文的base和body的元组。base的大小为4位,body的大小等于明文。
use short_crypt::ShortCrypt;
let sc = ShortCrypt::new("magickey");
assert_eq!((8, [216, 78, 214, 199, 157, 190, 78, 250].to_vec()), sc.encrypt("articles"));
assert_eq!("articles".as_bytes().to_vec(), sc.decrypt(&(8, vec![216, 78, 214, 199, 157, 190, 78, 250])).unwrap());
encrypt_to_url_component
方法在大多数情况下是加密的通用方法。ShortCrypt在加密明文后,将密文编码成一个基于Base64-URL格式的类似随机的字符串,以便可以与URL连接。
use short_crypt::ShortCrypt;
let sc = ShortCrypt::new("magickey");
assert_eq!("2E87Wx52-Tvo", sc.encrypt_to_url_component("articles"));
assert_eq!("articles".as_bytes().to_vec(), sc.decrypt_url_component("2E87Wx52-Tvo").unwrap());
encrypt_to_qr_code_alphanumeric
方法通常用于将数据加密成QR码。ShortCrypt在加密明文后,将密文编码成一个基于Base32格式的类似随机的字符串,以便可以插入到QR码中,兼容字母数字模式。
use short_crypt::ShortCrypt;
let sc = ShortCrypt::new("magickey");
assert_eq!("3BHNNR45XZH8PU", sc.encrypt_to_qr_code_alphanumeric("articles"));
assert_eq!("articles".as_bytes().to_vec(), sc.decrypt_qr_code_alphanumeric("3BHNNR45XZH8PU").unwrap());
此外,为了减少字符串的复制次数,您还可以使用encrypt_to_url_component_and_push_to_string,
encrypt_to_qr_code_alphanumeric_and_push_to_string
方法来使用相同的内存空间。
use short_crypt::ShortCrypt;
let sc = ShortCrypt::new("magickey");
let url = "https://magiclen.org/".to_string();
assert_eq!("https://magiclen.org/2E87Wx52-Tvo", sc.encrypt_to_url_component_and_push_to_string("articles", url));
let url = "https://magiclen.org/".to_string();
assert_eq!("https://magiclen.org/3BHNNR45XZH8PU", sc.encrypt_to_qr_code_alphanumeric_and_push_to_string("articles", url));
Crates.io
https://crates.io/crates/short-crypt
文档
许可证
依赖项
~530KB