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

  • 相关阅读:
    rabbitmq 学习10channel 说明
    ASP.NET中进行消息处理(MSMQ) 一
    ThreadLocal原理及用法详解
    设计模式责任链模式
    枚举详解之EnumSet、EnumMap用法
    设计模式策略模式和工厂模式结合使用
    Java并发编程系列之CyclicBarrier详解
    [解题报告]求平均成绩
    [解题报告]1005 Number Sequence
    [解题报告]1013Digital Roots
  • 原文地址:https://www.cnblogs.com/victorbu/p/15845551.html
Copyright © 2020-2023  润新知