Base62编码是由10个数字、26个大写英文字母和26个小写英文字母组成,多用于安全领域。本文将介绍对数字进行Base62编码与解码的方法。...直接上代码,如下: /** * base62编码与解码key,由10个数字、26个大写英文字母和26个小写英文字母组成 * @var string...$key = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz+/'; /** * base62...$str - ($a * pow(62, $t)); } return $out; } /** * base62...本站文章除注明转载外,均为本站原创 欢迎任何形式的转载,但请务必注明出处,尊重他人劳动 转载请注明:文章转载自:Marser [https://www.marser.cn] 本文标题:base62编码
序 base64大家肯定是很熟悉了,那base62是什么东东,它常被用来做短url的映射。...CHAR.charAt(rem)); return i / BASE; } 短url的转换 主要思路,维护一个全局自增的id,每来一个长url,将其与一个自增id绑定,然后利用base62...将该自增id转换为base62字符串,即完成转换。
## Base62 其他妙用 除了上面这个应用之外,其实现实也有很多应用也是使用 Base62 解决。 比如,我们现在常用的短网址服务,随便生成一个短网址。...https://tinyurl.com/y8jvg3eb 我们可以看到短网址最后都有一串字符串,那其实就是 Base62。...再比如,B 站现在使用的 BV 号,其实也是 Base62 的应用。...我们对比一下,通常使用纯数字形式 ID,即 Base10与 Base62 。...另外假设 5 位长度 Base62 用完了,只要加上一位,又可以容纳 62 倍数字,几乎很难再用完。 说完优点,我们再来聊聊 Base62 的缺点,不容易记忆。
背景 在学习设计 Short URL 时尝试基于 Rust 编写了一个 Base62 库 base62num。后来发现已经有一个 Rust 库 base-62 提供了 Base62 的功能。...但实际上 usize 的大小对于 Base62 的使用场景来说还是不太够用的。 我们来看看 base-62 中的设计思路。
而 base62 则是去掉了两个特殊字符,一共 62 个字符。 做短链的话,我们用 base62 比较多。...安装用到的包: npm install base62 测试下: const base62 = require("base62/lib/ascii"); const res = base62.encode...小结下: 用递增 id + base62 作为压缩码,可以保证唯一,但是容易被人拿到其它短码,不安全。 用 url 做 hash 之后取一部分然后 base62 做为压缩码,有碰撞的可能,不唯一。...AppModule 引入: 保存之后,TypeORM会自动建表: 表创建好了,接下来插入一些数据: nest g service unique-code --flat --no-spec 生成 service 类,...核心是压缩码的生成,我们分析了自增 id + base62,这样容易被人拿到其它短链,不安全。hash + base62 会有冲突的可能,所以最终用的是自己生成随机数 + base62 的方案。
加密工具类: import java.io.UnsupportedEncodingException; import java.security.GeneralSecurityException; import...* * 1.Commons-Codec的 hex/base64 编码 * 2.自定义的base62 编码 * 3.Commons-Lang的xml/html escape * 4...private static final String DEFAULT_URL_ENCODING = "UTF-8"; private static final char[] BASE62...decodeBase64(String input) { return Base64.decodeBase64(input); } /** * Base62...new char[input.length]; for (int i = 0; i < input.length; i++) { chars[i] = BASE62
具体实现如下: public ArrayList base62(int id) { ArrayList value = new ArrayList<... value.add(remainder); id = id / 62; } return value; } 举例 对于 ID = 138,通过 base62...代码如下: public static int base10(ArrayList base62) { //make sure the size of base62 is 6
php header("Content-Type:text/html;charset=UTF-8"); function base62($x){ $show...url_short($url){ $url = crc32($url); $result = sprintf("%u",$url); return base62
需要进行再编码,因此直接使用标准 Base64 编码进行短URL 编码并不合适,所以,我们需要针对 URL 场景对 Base64 编码进行改造,Base64 编码表中的 62,63 进行编码移除,更新为Base62...恢复混淆解密算法设计 将请求收到的短链Key根据打乱后的Base62编码转成十进制数,补0到10位,然后倒转就得到原来的短链Id
0123456789ABCDEF' BASE30 = '123456789ABCDEFGHJKLMNPQRTVWXY' BASE36 = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ' BASE62... decimal to a base that uses A-Z0-9a-z for its digits >>> baseconvert(257938572394L,BASE10,BASE62...) 'E78Lxik' ..convert back >>> baseconvert('E78Lxik',BASE62,BASE10) '257938572394
此文仅对自己工作中用到的类进行总结,方便以后的使用。...org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; /** * 封装各种生成唯一性ID算法的工具类...Long. */ public static long randomLong() { return Math.abs(random.nextLong()); } /** * 基于Base62
BaseCrack能够支持目前社区使用最为频繁的Base编码机制,其中包括Base16、Base32、Base36、Base58、Base62、Base64、Base64Url、Base85、Base91...支持的编码方案 Base16 Base32 Base36 Base58 Base62 Base64 Base64Url Base85 Base91 Base92 主要功能 能够对任意模式的多重Base编码数据进行解码...output-wordlist.txt API接口 如果你先要将BaseCrack以外部库的形式使用的话,你可以直接将该项目代码放到你项目的目录下,然后使用import导入之后,就可以通过BaseCrack()类和
生成XCode实体:根据JSON数据生成XCode实体类。 模板批量生成:根据模板文件批量生成代码。 网络工具 IP查询:查询指定IP地址的详细信息。 Ping检测:测试指定主机的网络连通性。...JSON转C#实体类:根据JSON数据生成C#实体类。 JSON转CSV:将JSON数据转换为CSV格式。 Postman数据转换:将Postman导出的数据转换为其他格式。...BASE62编码:对BASE62编码进行编码和解码。 BASE16编码:对BASE16编码进行编码和解码。 文件处理 编码识别:自动识别文件的编码格式。 文件校验:校验文件的完整性和一致性。
文章目录 一、常用的工具类库有哪些?为啥我要推荐Hutool?...四、包含组件 一个Java基础工具类,对文件、流、加密解密、转码、正则、线程、XML等JDK方法进行封装,组成各种Util工具类,同时提供以下组件: 模块介绍hutool-aopJDK动态代理封装...BoundedPriorityQueue 线程安全的HashSet-ConcurrentHashSet Map Map工具-MapUtil 双向查找Map-BiMap 可重复键值Map-TableMap Codec编码 Base62...编码解码-Base62 Base64编码解码-Base64 Base32编码解码-Base32 文本操作 CSV文件处理工具-CsvUtil 可复用字符串生成器-StrBuilder Unicode编码转换工具...HttpUtil Http请求-HttpRequest Http响应-HttpResponse HTML工具类-HtmlUtil UA工具类-UserAgentUtil 简易Http服务器-SimpleServer
Base62 索引表:为了让哈希值表示起来尽可能短,我们可以将通过 MurmurHash得到的 10 进制的哈希值转化成 62 进制如何做呢?...String base62Number = convertToBase62(hashValue); String shortUrl = String.format("hash值:%d base62...}}运行结果:长链接:https://cloud.tencent.com/developer/article/2378083 hash值:580086598hash值:580086598 base62...:dFz1S通过MurmurHash算法把长链 哈希取值后得到10进制的哈希值,然后10进制转换base62,经过两次变化,得到的短链为http://xx.cn/dFz1S ,已经很短了,这样是不是完美了呢...用户体验长链转换为短链的时候,千万要注意生成的短链有没有带关键字,比如:3691004 这个10进制数转换为base62得到的是fuck,短链为:http://xx.cn/fuck 你这样发出去,你的用户以为是你在骂他
其中常用的算法有 1、基于哈希的MurmurHash 算法 2、十进制转62进制 3、自增序列(Snowflake、Mysql 自增主键、类 uuid、redis) 关于短链接的原理研究可以阅读这两位大佬的文章...十进制转62进制工具类如下: public class Base62 { private static final char[] toBase62 = {'A', 'B', 'C', 'D',...; i < toBase62.length; i++) { fromBase62[toBase62[i]] = i; } } private Base62
short 若使用随机生成算法 两张表,一张存储 long2short,一张存储short2long 每个映射关系存两份,则能同时支持 long2short short2long 查询 若使用 base62
System类: System类主要是用来操作、获得系统相关的一些东西,例如之前用到的获取系统时间的方法System.currentTimeMillis(); ? 运行结果: ?...所以这时候就要使用到BigDecimal类。 BigDecimal类: BigDecimal类用于解决float和double运算时会丢失精度的问题。...BigInteger类: BigInteger是一个能够存储很大的整型数字的类,能够存储很多很多的数字,并且不会损失精度。 ? 运行结果: ?...Runtime类: Runtime是用来使应用程序能够与其运行的环境相连接的,使用对象可以访问JVM的相关信息,如处理器数量,内存信息等。并且可以控制终端执行一些系统命令。...Robot类: Robot是可以实现自动控制的一个类,例如自动控制鼠标,键盘,截图等功能。 控制键盘: ? 控制截图: ? 控制鼠标: ?
4.5 基于 base62 的分片策略 Hash(long_url)%62作为分片键 并将 hash(long_url)%62直接放到 short url 若原来的 short key 是 AB1234
BufferedImage Image是一个抽象类,BufferedImage是其实现类,是一个带缓冲区图像类,主要作用是将一幅图片加载到内存中(BufferedImage生成的图片在内存里有一个图像缓冲区...Graphics2D类提供更强大的绘图能力。...若要精确定位,则需要知道字符串显示的长度和字高,可以通过FontMetrics类来实现。...Color对象:Color color=new Color(int R,int G,int B),由于是8位,所以不能超过255;二是用颜色常量如Color.red,Color.green等,Color类提供了...g.fillRect(90,10,60,90); g.copyArea(40,50,60,70,-20,80); g.copyArea(110,50,60,60,10,80); 对Point、Rectangle类的应用
领取专属 10元无门槛券
手把手带您无忧上云