Hashids java 版使用
在软件开发中 id 通常为 int 或者 long 类型,有时会有混淆 id 的需求,比如反爬虫。Hashids 是一个小型的开源库,可以将数字或者十六进制字符串转换成唯一的、非顺序的 id。
使用
添加依赖
<dependency>
<groupId>org.hashids</groupId>
<artifactId>hashids</artifactId>
<version>1.0.3</version>
</dependency>
编码一个数字
Hashids hashids = new Hashids("this is my salt");
String hash = hashids.encode(12345L);
// 结果:NkK9
解码一个数字
Hashids hashids = new Hashids("this is my salt");
long[] numbers = hashids.decode("NkK9");
编码几个数字
Hashids hashids = new Hashids("this is my salt");
String hash = hashids.encode(683L, 94108L, 123L, 5L);
// 结果:aBMswoO2UB3Sj
指定编码结果的最小长度
Hashids hashids = new Hashids("this is my salt", 8);
String hash = hashids.encode(1L);
// 结果:gB0NV05e
指定编码结果使用的字母表
Hashids hashids = new Hashids("this is my salt", 0, "0123456789abcdef");
String hash = hashids.encode(1234567L);
// 结果:b332db5
编码十六进制字符串
Hashids hashids = new Hashids("This is my salt");
String hash = hashids.encodeHex("507f1f77bcf86cd799439011");
// 结果:goMYDnAezwurPKWKKxL2
解码十六进制字符串
Hashids hashids = new Hashids("This is my salt");
String objectId = hashids.decodeHex(hash);
注意事项
Java 版本是基于 JS 版本实现,因为 JS 对数字的范围限制是 2^53 - 1 (9007199254740991),为了保持兼容,Java 版本也保留了此限制,如果大于此数字将抛出 IllegalArgumentException 异常。
如果想要编码大于 9007199254740991 的数字可以使用编码十六进制字符串的方法。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
2021-01-26 k8s (七) 从应用访问 pod 元数据以及其他资源