branca token java_Branca Token:一款经过认证加密的安全API令牌

今天给大家介绍的是一款名叫Branca的加密令牌,Branca使用了现代密码学算法来对API令牌进行认证和加密,并可用于多种在线服务之中。

工具介绍

Branca是一种易于使用的令牌格式,并且它的易于使用并不是以牺牲安全性换取来的。它使用了IETF XChaCha20-Poly1305 AEAD对称加密算法来生成防篡改的加密令牌,Payload本身是任意字节序列,你可以使用JSON对象、明文字符串或任意序列化二进制数据。

设计目标

1. 安全第一;

2. 易于实现和使用;

3. 更小的令牌体积;

令牌格式

Branca令牌由header、密文(Cyphertext)和一个认证标识(Tag)组成,其中header由版本信息(Version)、时间戳(Timestamp)和随机数(Nonce)组成。将这些信息组合在一起之后,我们得到了下列数据结构:

Version(1B) || Timestamp (4B) || Nonce (24B) || Ciphertext (*B) || Tag (16B)

代表上述二进制令牌的字符串必须使用base62编码,可选的字符集如下:

0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxy

版本信息(Version)

版本信息长度为8位,当前的版本信息为0xBA,你可以用它来识别已有的令牌,版本信息可以用来确定令牌格式和加密算法。

时间戳(Timestamp)

时间戳为32位,它是无符号的大端4字节UNIX时间戳。时间戳可以帮助验证方判断令牌的生成时间以确定其当前是否仍然有效。除此之外,以无符号整形存储时间戳可以帮助我们避免2038年问题,因为研究人员预测到2106年才会出现无符号整形溢出的问题。

随机数(Nonce)

随机数长度为192位,随机数必须是经过安全加密的随机字节,并且不会在令牌间重复使用。

密文(Cyphertext)

Payload使用IETFXChaCha20-Poly1305来进行加密和认证,但header中的数据(版本信息(Version)、时间戳(Timestamp)和随机数(Nonce))并没有进行加密(只需要认证),因为在某些人眼里,header只能被查看到,却不能被篡改…

认证标识(Tag)

认证Tag为128位,它是一种Poly1305消息认证码,可以用来确保Payload以及其他未加密Header不被篡改。

令牌使用

我们假设你的密码库支持组合模式,在组合模式下,认证标识Tag以及加密消息需要存储在一起。如果你的密码库不支持组合模式,tag就是ciphertext|tag组合的最后16字节数据。

生成令牌

一个256位的密钥key加上任意Payload,我们就可以按照下列步骤生成令牌:

1. 生成安全加密随机数。

2. 如果用户没有提供时间戳,则使用当前的unixtime。

3. 通过组合version、timestamp和nonce来构造header。

4. 使用IETF XChaCha20-Poly1305 AEAD以及用户提供的密钥来对Payload进行加密。

5. 使用Base62对整个令牌进行编码。

验证令牌

用户可以按照下列步骤恢复原始的未加密Payload:

1. 使用Base62对令牌进行解码。

2. 确保解码后的令牌第一个字节为0xBA。

3. 提取header。

4. 提取nonce。

5. 提取timestamp。

6. 提取ciphertext|tag组合。

7. 使用IETF XChaCha20-Poly1305 AEAD解密并验证ciphertext|tag组合。

代码库

当前已实现Branca令牌的项目如下:

102478565.jpg

责任编辑:韩希宇

Python网络爬虫与推荐算法新闻推荐平台:网络爬虫:通过Python实现新浪新闻的爬取,可爬取新闻页面上的标题、文本、图片、视频链接(保留排版) 推荐算法:权重衰减+标签推荐+区域推荐+热点推荐.zip项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全领域),有任何使用问题欢迎随时与我联系,我会及时为您解惑,提供帮助。 【资源内容】:包含完整源码+工程文件+说明(如有)等。答辩评审平均分达到96分,放心下载使用!可轻松复现,设计报告也可借鉴此项目,该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的。 【提供帮助】:有任何使用问题欢迎随时与我联系,我会及时解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 下载后请首先打开README文件(如有),项目工程可直接复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值