2个版本

0.1.1 2024年5月2日
0.1.0 2024年5月1日

#737 in 文本处理

艺术-2.0

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溢出时。

其他实现

无运行时依赖