首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Go - 常用签名算法的基准测试

Go - 常用签名算法的基准测试

作者头像
新亮
发布2021-01-18 11:48:09
6110
发布2021-01-18 11:48:09
举报
文章被收录于专栏:新亮笔记新亮笔记新亮笔记

签名验证是为了保证接口安全和识别调用方身份,同时还需要满足以下几点:

  • 可变性:每次的签名必须是不一样的。
  • 时效性:每次请求的时效性,过期作废。
  • 唯一性:每次的签名是唯一的。
  • 完整性:能够对传入数据进行验证,防止篡改。

签名规则大同小异,根据自己的业务情况进行制定即可。

签名过程中我们会用到的几种算法,接下来 分享一下每个算法的基准测试,可能会存在误差,供大家参考。

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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-01-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 新亮笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • MD5 单向散列加密
  • AES 对称加密
  • RSA 非对称加密
  • 最后
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档