Java生成tocken

转自博客

Tocken是什么

tocken作为一种身份认证的标识 被广泛应用到各个方面,所以其要求一种非常高的唯一性和随机性。当然也还包括时效性。

GUID (全局唯一标识符) 编辑
全局唯一标识符(GUID,Globally Unique Identifier)是一种由算法生成的二进制长度为128位的数字标识符。GUID主要用于在拥有多个节点、多台计算机的网络或系统中。在理想情况下,任何计算机和计算机集群都不会生成两个相同的GUID。GUID 的总数达到了2128(3.4×1038)个,所以随机生成两个相同GUID的可能性非常小,但并不为0。GUID一词有时也专指微软对UUID标准的实现。

由于guid的这种随机性和唯一性。通常使用guid作为一个tocken,其形态如{79FAF822-7194-4FE3-8C4F-1D99BE71BC9C}

java中实现guid

我们需要使用com.sun.jna.platform.win32.Guid 利用Guid.GUID.newGuid().toGuidString()即可获取这样一个字符串。

改进

{79FAF822-7194-4FE3-8C4F-1D99BE71BC9C}这样的字符串其实还是显得太长而且样式不好看,当然也可以通过String的方法将 " { } - " 这些符号去除,不过如果使用其他的办法的话呢?

base64编码

如果使用Base64编码的话,则可以进一步压缩字符串,使用方法:生成一个sun.misc.BASE64Encoder对象即可。通过该对象含有的enCode()方法编码。当然,base64只支持byte[] 所以还要将上一步获取得到的tocken进行转化,但是细心的人应该发现了,Guid.GUID.newGuid()生成的对象可以直接获取byte[],所以最终简化的代码为
base64Encoder.encode(Guid.GUID.newGuid().toByteArray()),这样获取的结果为类似NesTEkyBQP2HVk9N5Ge1DA==的字符串,是不是很熟悉?

你可能感兴趣的:(Java生成tocken)