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 的数字可以使用编码十六进制字符串的方法。

posted @   VictorBu  阅读(917)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
历史上的今天:
2021-01-26 k8s (七) 从应用访问 pod 元数据以及其他资源
点击右上角即可分享
微信分享提示