Go - 常用签名算法的基准测试
2021/4/27 20:28:17
本文主要是介绍Go - 常用签名算法的基准测试,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
签名验证是为了保证接口安全和识别调用方身份,同时还需要满足以下几点:
可变性:每次的签名必须是不一样的。
时效性:每次请求的时效性,过期作废。
唯一性:每次的签名是唯一的。
完整性:能够对传入数据进行验证,防止篡改。
签名规则大同小异,根据自己的业务情况进行制定即可。
签名过程中我们会用到的几种算法,接下来 分享一下每个算法的基准测试,可能会存在误差,供大家参考。
MD5 单向散列加密
func BenchmarkEncrypt(b *testing.B) { b.ResetTimer() for i := 0; i < b.N; i++ { New().Encrypt("123456") } } // 输出 goos: darwin goarch: amd64 pkg: github.com/xinliangnote/go-gin-api/pkg/md5 BenchmarkEncrypt-12 10000000 238 ns/op PASS
AES 对称加密
func BenchmarkEncryptAndDecrypt(b *testing.B) { b.ResetTimer() aes := New(key, iv) for i := 0; i < b.N; i++ { encryptString, _ := aes.Encrypt("123456") aes.Decrypt(encryptString) } } // 输出 goos: darwin goarch: amd64 pkg: github.com/xinliangnote/go-gin-api/pkg/aes BenchmarkEncryptAndDecrypt-12 1000000 1009 ns/op PASS
RSA 非对称加密
func BenchmarkEncryptAndDecrypt(b *testing.B) { b.ResetTimer() rsaPublic := NewPublic(publicKey) rsaPrivate := NewPrivate(privateKey) for i := 0; i < b.N; i++ { encryptString, _ := rsaPublic.Encrypt("123456") rsaPrivate.Decrypt(encryptString) } } // 输出 goos: darwin goarch: amd64 pkg: github.com/xinliangnote/go-gin-api/pkg/rsa BenchmarkEncryptAndDecrypt-12 1000 1345384 ns/op PASS
最后
JWT 的签名验证也使用过,分享一下 JWT
的基准测试,使用的是 jwt.SigningMethodHS256
方法。
func BenchmarkSignAndParse(b *testing.B) { b.ResetTimer() token := New(secret) for i := 0; i < b.N; i++ { tokenString, _ := token.Sign(123456789, "xinliangnote") token.Parse(tokenString) } } // 输出 goos: darwin goarch: amd64 pkg: github.com/xinliangnote/go-gin-api/pkg/token BenchmarkSignAndParse-12 200000 11749 ns/op PASS
以上代码在 go-gin-api
项目中,地址:github.com/xinliangnote/go-gin-api
这篇关于Go - 常用签名算法的基准测试的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23MongoDB身份认证机制揭秘!
- 2024-11-20MongoDB教程:从入门到实践详解
- 2024-11-17执行 Google Ads API 查询后返回的是空数组什么原因?-icode9专业技术文章分享
- 2024-11-17google广告数据不同经理账户下的凭证可以获取对方的api数据吗?-icode9专业技术文章分享
- 2024-11-15SendGrid 的 Go 客户端库怎么实现同时向多个邮箱发送邮件?-icode9专业技术文章分享
- 2024-11-15SendGrid 的 Go 客户端库怎么设置header 和 标签tag 呢?-icode9专业技术文章分享
- 2024-11-12Cargo deny安装指路
- 2024-11-02MongoDB项目实战:从入门到初级应用
- 2024-11-01随时随地一键转录,Google Cloud 新模型 Chirp 2 让语音识别更上一层楼
- 2024-10-25Google Cloud动手实验详解:如何在Cloud Run上开发无服务器应用