算法与部署说明 / SPEC
为什么是三进制。 现有开源方案 Binary Il(MIT)用 I/l 两字符按 1 bit 映射,oi1(MIT)用 O/0/I/l 四字符按 2 bit 映射。本工具把字符集严格限制为 3 个,2 bit 的 4 个状态放不下,因此改为:UTF-8 字节流当成大整数,转 base3,每个 trit 映射 0→1 1→i 2→l。每字符携带 log2(3) ≈ 1.585 bit,比 1 bit/字符 的方案短约 37%。
帧格式。 0x01 | crc16(payload) | payload。首字节哨兵防止大整数前导零丢失;crc16(FNV-1a 低 16 位)用于检出漏复制或改动;Unicode 走 UTF-8,解码用 fatal 模式校验。
两段式路径:/HEAD/BODY。 路径恰好两段,除 host 外可见字符全是 1/i/l。
HEAD 是少位段,位数 H 取「最小满足 3H ≥ BODY 长度」,一般 3~7 位,内容是偏移量经仿射加密后的结果:enc = (shift × A + S) mod 3H,其中 A = 2654435761 mod 3H、S = 0x1A2B mod 3H。
BODY 是一整条不分割的密文,按 shift = crc16(cipher) mod L 循环左移后的排列,中间没有任何 /。
解码端由 BODY 长度自行推出 H 与 3H,用 A 的模逆还原 shift,反向移位后走 base3 解码 + CRC 校验;HEAD 被改动会被 CRC 拒绝。同一原文每次生成同一条链接,无随机量、无数据库。
可逆、无状态。 数据全在 URL 里,不需要数据库,也不访问网络。把本文件部署到 1ill1ill.lovie.me,并配置所有路径回落到 index.html,页面会自动识别路径里的密文并直接跳转到目标,无需点击确认。Cloudflare Pages 的 _redirects 写一行即可:
/* /index.html 200
安全边界:这是视觉混淆,不是加密,任何人都能解码;跳转目标仅允许 http/https,已阻断 javascript: 与 data: 协议。请勿用于钓鱼或伪装链接。
配套命令行实现见同目录 il.py,python il.py test 运行回归测试,python il.py vectors 输出跨语言一致性向量。MIT License.