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 vet
和golint
以保证代码质量。
许可证
本项目遵循MIT许可证,意味着您可以自由地使用、修改和分发这个软件,需遵守许可证中的条款。
以上即是branca项目的简介和技术使用文档,希望对你有所帮助。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考