西安外贸网站开发,在线设计房屋装修app,中国机械工程,门户网站做等保需要备案哪些在我们的开发过程中#xff0c;经常会遇到ID生成的问题#xff0c;那么这里就介绍一种解决方案#xff0c;注意这里只适合混淆ID规则#xff0c;也就是说生成的ID没有任何规则#xff0c;不适用于订单ID。一般有序自增主键的ID#xff0c;极易被爬虫抓取数据#xff0c;…在我们的开发过程中经常会遇到ID生成的问题那么这里就介绍一种解决方案注意这里只适合混淆ID规则也就是说生成的ID没有任何规则不适用于订单ID。一般有序自增主键的ID极易被爬虫抓取数据作为应用开发者这是不应该的你辛辛苦苦收集的数据转眼之间被其他人给抓取了是不是很大的损失话说著名的Youtube网站就是这么做的。今天我们介绍的一个支持市面上所有语言的数字编码库hashids。hashidsHashids是一个非常小巧的跨语言的开源库它用来把数字编码成一个随机字符串。它不同于md5这种算法这种单向映射Hashids除了编码还会解码。如果转换方式一样那么同一字符串得到的结果是相同的。Hashids hashids new Hashids(this is my salt);//加密数字1String hashStr hashids.encode(1);System.out.println(1加密后值为hashStr);//解密数字1long[] hashNums hashids.decode(hashStr);for (int i 0; i hashNums.length; i) { System.out.println(解密后值为 hashNums[i]);}hashids自定义设置最小哈希长度支持设置加密后的字符串长度Hashids hashids new Hashids(this is my salt,6); //加密数字1String hashStr hashids.encode(1);System.out.println(自定义哈希长度加密1后值为hashStr); //解密数字1 long[] hashNums hashids.decode(hashStr);for (int i 0; i hashNums.length; i) { System.out.println(自定义哈希长度解密1后值为 hashNums[i]); }hashids自定义设置哈希字母表支持设置哈希字母表不过最少长度应该是16位这里没有具体的测试。Hashids hashids new Hashids(this is my salt, 0, 0123456789ABCDEF); String hashStr hashids.encode(1); System.out.println(自定义哈希字母表加密1后值为 hashStr);long[] hashNums hashids.decode(hashStr);for (int i 0; i hashNums.length; i) { System.out.println(自定义哈希字母表解密1后值为 hashNums[i]); }使用安装,npm包地址https://www.npmjs.com/package/hashidsnpm install hashids在PHP中的使用方法$hashids new HashidsHashids(this is my salt);$id $hashids-encode(1, 2, 3);$numbers $hashids-decode($id);在NodeJs中使用const Hashids require(hashids/cjs);const hashids new Hashids(, 11);hashids.encode(20);在JS中使用在使用过程中该方法不可用来作为加密使用。项目地址请点击扩展链接