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==的字符串,是不是很熟悉?

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,083评论 19 139
  • 可以看我的博客 lmwen.top 或者订阅我的公众号 简介有稍微接触python的人就会知道,python中...
    ayuLiao阅读 3,223评论 1 5
  • http://python.jobbole.com/85231/ 关于专业技能写完项目接着写写一名3年工作经验的J...
    燕京博士阅读 7,645评论 1 118
  • 编码问题一直困扰着开发人员,尤其在 Java 中更加明显,因为 Java 是跨平台语言,不同平台之间编码之间的切换...
    x360阅读 2,517评论 1 20
  • 据导游介绍,如把华山五峰比作人手上的五指的话,那么 大拇指:北峰(云台峰)智取华山曾取道这里 小拇指:东峰(朝...
    张焕英阅读 964评论 0 1