www.js333com接纳Base64对U帕杰罗L参数编码

黄金年代致,定义四个和手提式有线电话机号长度十一位相通长度的字节数组,为防御数组越界抛十分大家供给校验参数的合法性

Base64的原理相当粗略,首先,准备贰个包括61个字符的数组:

原来的文章小编手艺博客:

还足以温和定义六11个字符的排列顺序,那样就能够自定义Base64编码,不过,日常状态下完全没供给。

编码字符串最终的"="是补齐,因为base64编码后的字符长度应该是4的倍数,不足的话会动用“=”号补齐,假诺恶感那几个“=”号大家得以过滤掉,如下:

生机勃勃经要编码的二进制数据不是3的倍数,最后会剩下1个或2个字节怎么做?Base64用\x00字节在最后补足后,再在编码的末段加上1个或2个=号,表示补了不怎么字节,解码的时候,会自动去掉。

 /** * 通过编码后的字符获取对应的手机号 * @param code * @return */ public static String getPhoneByLink(String code){ byte []temp = new byte[11]; try { byte []key = {'A','B','C','D','E','F','G','H', 'I', 'J', 'K'}; if(StringUtils.isNotBlank{ byte []phoneByte = Base64Utils.decodeFromUrlSafeString; if(phoneByte != null && phoneByte.length > 0 && phoneByte.length <= 11 ){ for (int i = 0; i < phoneByte.length; i++) { temp[i] = (key[i] ^ phoneByte[i]); } } } }catch (Exception e){ e.printStackTrace(); }finally { return new String; } }

 public static void main(String args[]){ System.out.println("对手机号编码后:"+getLinkByPhone("18200001234")); System.out.println("解码后的手机号:"+getPhoneByLink("cHpxdHV2d3l7eX8=")); }

那般我们得到4个数字作为目录,然后查表,获得相应的4个字符,正是编码后的字符串。

在眼下的项目中,我们必要将手机号作为U奥德赛L中的参数,相符:http://www.***.com/18200001234这种,不过手提式无线电话机号那样公然展现又不太安全,为防止客户恶意点窜U卡宴L的参数,于是就分选拔Base64举办编码了。

['A', 'B', 'C', ... 'a', 'b', 'c', ... '0', '1', ... '+', '/']
 /** * 通过手机号获取手机号对应的编码code * @param phone * @return */ public static String getLinkByPhone(String phone){ byte []key = {'A','B','C','D','E','F','G','H', 'I', 'J', 'K'}; byte []temp = new byte[11]; if(verifyPhone{ for (int i = 0; i < phone.length { temp[i] = (key[i] ^ phone.charAt; } } return Base64Utils.encodeToUrlSafeString; }

Base64适用于小段内容的编码,比如数字证书签字、Cookie的剧情等。

概念三个和手提式有线电话机号长度12个人相通长度的字节数组,数组里的字符能够是a-z、0-9的随便字符,而且接收异或的法规编码,保障URAV4L深入分析不发生特别选用“url safe”编码格局

Python内置的base64能够向来开展base64的编解码:

www.js333com 1base64对手提式无线电话机号编码解码结果

>>> import base64
>>> base64.b64encode(b'binary\x00string')
b'YmluYXJ5AHN0cmluZw=='
>>> base64.b64decode(b'YmluYXJ5AHN0cmluZw==')
b'binary\x00string'

Base64编码是从二进制到字符的转换进程,并不是确实的加密方法,说Base64编码是加密措施,只是因为通过Base64编码之后,令人一眼看上去不明白怎么内容而已。关于将手提式有线电话机号调换到加密字符串的情势还应该有超多,这里只是大器晚成种方法的记录。

www.js333com 2

Base64是黄金时代种任性二进制到文本字符串的编码方法,常用于在U奇骏L、库克ie、网页中传输一点点二进制数据。有时候大家在Url传递的参数蕴含特殊字符“+”,“/”,“=”时,那几个字符作为参数是不能不奇怪接受的,也许大家的参数饱含了客商的音信举个例子手提式有线电话机号、顾客id等,我们不想精通彰显,那时候都足以应用base64编码。

故此,Base64编码会把3字节的二进制数据编码为4字节的文书数据,长度扩展33%,好处是编码后的公文数据足以在邮件正文、网页等一贯体现。