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



本文来自:51CTO博客

感谢作者:mb600be85f1b06a

查看原文:Go - 常用签名算法的基准测试

相关阅读 >>

2021-04-19

Golang判断字符串是否为空的方法

Golang sync.waitgroup 在for循环内取值错误

Golang格式化符号%b是什么意思

Go 号称几行代码开启一个 http server,底层都做了什么?

Golang 四则运算 计算器 yacc 归约

Go官方文档,我们能得到哪些资料?

3.树莓派常用软件&篇程语言&篇程环境(32位/64位)

Golang可以热更新吗

关于Golang的make

更多相关阅读请进入《Go》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...