#encryption #url #qrcode #decryption #crypto

no-std short-crypt

ShortCrypt是一个非常简单的加密库,旨在将任何数据加密成看起来随机的数据。

29个稳定版本

1.1.0 2020年6月24日
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

Download history 291/week @ 2024-04-22 347/week @ 2024-04-29 136/week @ 2024-05-06 72/week @ 2024-05-13 124/week @ 2024-05-20 244/week @ 2024-05-27 66/week @ 2024-06-03 162/week @ 2024-06-10 174/week @ 2024-06-17 170/week @ 2024-06-24 61/week @ 2024-07-01 98/week @ 2024-07-08 62/week @ 2024-07-15 78/week @ 2024-07-22 39/week @ 2024-07-29 71/week @ 2024-08-05

254次每月下载
10个crate(4直接)中使用

MIT许可证

22KB
376

ShortCrypt

CI

ShortCrypt是一个非常简单的加密库,旨在将任何数据加密成看起来随机的数据。即使这些数据相似,加密后的数据仍然非常不同。最重要的是,密文比明文仅大4位,因此适用于URL或QR码中使用的数据。除此之外,它也是序列号生成的理想选择。

示例

encrypt方法可以创建一个包含密文的basebody的元组。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_stringencrypt_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

文档

https://docs.rs/short-crypt

许可证

MIT

依赖项

~530KB