2个版本
0.1.1 | 2024年5月2日 |
---|---|
0.1.0 | 2024年5月1日 |
#737 in 文本处理
11KB
138 行
SquishyID
在Rust语言中缩短并混淆ID。
用途
- 在URL或REST API中隐藏真实数据库ID。
- 在空间有限的地方节省空间,如短信或推送消息。
示例
use squishyid::SquishyID;
let s = SquishyID::new(
"2BjLhRduC6Tb8Q5cEk9oxnFaWUDpOlGAgwYzNre7tI4yqPvXm0KSV1fJs3ZiHM"
).unwrap();
let encoded: String = s.encode(48888851145);
assert_eq!(encoded, "1FN7Ab");
let decoded: u64 = s.decode("1FN7Ab").unwrap();
assert_eq!(decoded, 48888851145);
方法
new(key: &str) -> Result<Self, &str>
使用给定键构造新实例。
- 它必须至少包含两个唯一的Unicode字符。
- 键越长 - 编码ID越短。
- 编码ID将仅由键中的字符组成。
明智地选择你的键字符,例如
- 为短信消息从
a-z,A-Z,0-9
范围生成密钥。你将获得非常短的缩短,例如1234567890
->380FQs
。 - 为NTFS文件名从
a-z
范围生成密钥。你将获得良好的缩短并避免不区分大小写的冲突,例如1234567890
->iszbmfx
。 - 当恶搞时,从表情符号生成密钥。所以
1234567890
将表示为😣😄😹😧😋😳
。
错误
密钥必须包含至少2字符.
密钥必须包含唯一的字符.
encode(&self, decoded: u64) -> String
使用键中的字符编码数字。
请注意,这不应被视为强加密。它不包含一致性检查。并且可以通过少量编码/解码样本轻松逆向工程密钥。仅将其视为非常快的混淆。
decode(&self, encoded: &str) -> Result<u64, &str>
使用键中的字符解码字符串。
错误
编码值必须包含至少1字符.
编码值包含键中未出现的字符在键.
Encoded value too big to decode.
- 当它会导致u64溢出时。