branca项目技术文档

branca项目技术文档

branca :key: Secure alternative to JWT. Authenticated Encrypted API Tokens for Go. branca 项目地址: https://gitcode.com/gh_mirrors/br/branca

概述

branca 是一款专为安全需求设计的JWT替代方案,完全采用Go语言实现(无需cgo依赖),遵循了branca token规范。适用于需要进行轻量级且安全的身份验证或信息加密场景。

安装指南

确保您的Go环境版本在1.13及以上。然后,通过以下命令来安装branca库:

go get -u github.com/hako/branca

这将下载并安装最新的branca包到你的Go的工作区中。

使用说明

快速开始

以下代码示例展示了如何使用branca来编码和解码信息。

package main

import (
	"fmt"
	"github.com/hako/branca"
)

func main() {
	// 初始化branca实例,密钥长度必须为32字节。
	b := branca.NewBranca("超级秘密密钥,不应该提交到版本控制!")

	// 编码字符串为Branca令牌。
	message := "你好,世界!"
	tokenString, err := b.EncodeToString(message)
	if err != nil {
		fmt.Println("编码错误:", err)
		return
	}

	// 解码Branca令牌回原字符串。
	retrievedMessage, err := b.DecodeToString(tokenString)
	if err != nil {
		fmt.Println("解码错误:", err)
		return
	}

	fmt.Println("令牌:", tokenString)
	fmt.Println("原始消息:", retrievedMessage)
}

设置过期时间

虽然当前示例没有显示设置过期时间(TTL),但branca支持通过SetTTL方法为生成的令牌指定有效时长(秒)。请注意,未展示的设置会导致在设置TTL后的旧令牌无效。

API使用文档

  • NewBranca(key string):创建一个新的branca实例。key是用于签名和验证的密钥,务必保持私密。

  • EncodeToString(data interface{}) (string, error):将任意可序列化数据编码成字符串形式的令牌。

  • DecodeToString(token string) (interface{}, error):从给定的Branca令牌字符串中解码数据,返回原始数据及可能的错误。

  • SetTTL(ttl int)(可选):设定令牌的有效期,单位为秒。

注意事项与待办项

  • branca已移除了对cgo的依赖,并切换到了纯Go语言的XChaCha20算法。
  • 尚待添加的功能包括对字节切片([]byte)的编码和解码操作、性能测试以及进一步的文档和示例丰富。

贡献与反馈

社区贡献热烈欢迎!你可以fork仓库,加入自己的改进后发起PR。对于bug修复、新特性建议或反馈,请在issues板块提出。运行测试指令go test,推荐加上go vetgolint以保证代码质量。

许可证

本项目遵循MIT许可证,意味着您可以自由地使用、修改和分发这个软件,需遵守许可证中的条款。

以上即是branca项目的简介和技术使用文档,希望对你有所帮助。

branca :key: Secure alternative to JWT. Authenticated Encrypted API Tokens for Go. branca 项目地址: https://gitcode.com/gh_mirrors/br/branca

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

詹坦直Lucinda

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值