Package org.miaixz.bus.core.data


package org.miaixz.bus.core.data
数据相关封装 如ID、电话、统一社会信用代码、密码、坐标系、数据脱敏等
Since:
Java 17+
Author:
Kimi Liu
  • Class
    Description
    公民身份号码(Citizen Identification Number),参考GB11643-1999标准。 1-2位: 2位省份代码。 3-4位: 2位城市代码。 5-6位: 2位区县代码。 7-14位: 8位数字出生日期码。 15-17位:3位数字顺序码。第17位奇数表示男性,偶数表示女性 18位: 1位数字校验码。校检码可以是0~9的数字,有时也用X表示
    坐标系转换相关工具类,主流坐标系包括: WGS84坐标系:即地球坐标系,中国外谷歌地图 GCJ02坐标系:即火星坐标系,高德、腾讯、阿里等使用 BD09坐标系:即百度坐标系,GCJ02坐标系经加密后的坐标系。百度、搜狗等使用
    坐标经纬度
    统一社会信用代码(GB32100-2015)工具类 标准见:GB 32100-2015 三证合一、一照一码政策之后,纳税人识别号 == 统一社会信用代码 政策见国家税务总局:“三证合一”后纳税人识别号有何变化? 规则:
    ID生成器工具类,此工具类中主要封装:
    数据脱敏(Data Masking)工具类,对某些敏感信息(比如,身份证号、手机号、卡号、姓名、地址、邮箱等 )屏蔽敏感数据。
    NanoId,一个小型、安全、对 URL友好的唯一字符串 ID 生成器,特点: 安全:它使用加密、强大的随机 API,并保证符号的正确分配 体积小:只有 258 bytes 大小(压缩后)、无依赖 紧凑:它使用比 UUID (A-Za-z0-9_~)更多的符号
    MongoDB ID生成策略实现 ObjectId由以下几部分组成:
    进程ID单例封装 第一次访问时调用ManagementFactory.getRuntimeMXBean()获取PID信息,之后直接使用缓存值
    Twitter的Snowflake 算法 分布式系统中,有一些需要使用全局唯一ID的场景,有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。 snowflake的结构如下(每部分用-分开):
    字符类型枚举
    密码强度等级枚举
    ULID(Universally Unique Lexicographically Sortable Identifier)通用唯一词典分类标识符,特性: 与UUID的128位兼容性 每毫秒1.21e + 24个唯一ULID 按字典顺序(也就是字母顺序)排序 规范地编码为26个字符串,而不是UUID的36个字符 使用Crockford的base32获得更好的效率和可读性(每个字符5位) 不区分大小写 没有特殊字符(URL安全) 单调排序顺序(正确检测并处理相同的毫秒)
    提供通用唯一识别码(universally unique identifier)(UUID)实现,UUID表示一个128位的值。 此类拷贝自java.util.UUID,用于生成不带-的UUID字符串 Generate UUID 不同版本UUID在线生成和参考:Generate UUID UUID 的 5 个版本:UUID 5 version 区别 UUID代码实现参考:sake/uuid4j实现 UUIDv1: Structure,形如:xxxxxxxx-xxxx-1xxx-yxxx-xxxxxxxxxxxx,UUID v1 表示为 32 个字符的十六进制字符串,分五组显示,并用连字符分隔; 基于时间,同时访问主机的 MAC 地址; generate a time based UUID (V1) UUIDv2: Structure,形如:xxxxxxxx-xxxx-2xxx-yxxx-xxxxxxxxxxxx,UUID v2 的结构与其他 UUID 相同;需要 DCE–分布式计算机环境 生成唯一标识符;由于基于计算主机名,有隐私风险,未大规模使用 UUIDv3: Structure,形如:xxxxxxxx-xxxx-3xxx-yxxx-xxxxxxxxxxxx,UUID v3 的结构与其他 UUID 相同;需要 基于命名·使用MD5哈希加密 生成唯一标识符; UUIDv4: Structure,形如:xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx,UUID v4 的结构与其他 UUID 相同,使用最多的版本,使用随机数生成。 默认实现都是该版本; generate a random UUID (V4) UUIDv5: Structure,形如:xxxxxxxx-xxxx-5xxx-yxxx-xxxxxxxxxxxx,UUID v5 的结构与其他 UUID 相同,需要根据 基于命名·使用SHA-1哈希加密 生成唯一标识符; generate name based UUID with SHA1 hashing (v5) UUIDv6: Structure,形如:xxxxxxxx-xxxx-6xxx-yxxx-xxxxxxxxxxxx,UUID v6 的结构与其他 UUID 相同,与 UUIDv1 的字段兼容版本,结合 UUIDv1 和 UUIDv4 的优点,确保基于时间的自然排序和更好的隐私; UUIDv7: Structure,形如:xxxxxxxx-xxxx-7xxx-yxxx-xxxxxxxxxxxx,UUID v7 的结构与其他 UUID 相同,提供了从 Unix Epoch 时间戳派生的时间排序值,以及改进的熵特性。如果可能,建议使用版本 1 和 6; generate a ordered time based UUID (V7) version 字段保存描述此 UUID 类型的值。有 7 种不同的基本 UUID 类型:基于时间的 UUIDv1、DCE 安全 UUIDv2、基于名称的 UUIDv3 、随机生成的 UUIDv4、基于名称的SHA-1算法的 UUIDv5、基于时间的随机生成的 UUIDv6 和 基于时间戳的 UUIDv7。 这些类型的 version 值分别为 1、2、3、4、5、6 和 7。最常用的V4 这些通用标识符具有不同的变体。此类的方法用于操作 Leach-Salz 变体,不过构造方法允许创建任何 UUID 变体(将在下面进行描述)。 变体 2 (Leach-Salz) UUID 的布局如下: long 型数据的最高有效位由以下无符号字段组成:
    VIN是Vehicle Identification Number的缩写,即车辆识别号码。VIN码是全球通行的车辆唯一标识符,由17位数字和字母组成。