经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » Go语言 » 查看文章
[系列] Go - 常用签名算法的基准测试
来源:cnblogs  作者:新亮笔记  时间:2021/1/11 9:37:55  对本文有异议

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

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

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

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

MD5 单向散列加密

  1. func BenchmarkEncrypt(b *testing.B) {
  2. b.ResetTimer()
  3. for i := 0; i < b.N; i++ {
  4. New().Encrypt("123456")
  5. }
  6. }
  7. // 输出
  8. goos: darwin
  9. goarch: amd64
  10. pkg: github.com/xinliangnote/go-gin-api/pkg/md5
  11. BenchmarkEncrypt-12 10000000 238 ns/op
  12. PASS

AES 对称加密

  1. func BenchmarkEncryptAndDecrypt(b *testing.B) {
  2. b.ResetTimer()
  3. aes := New(key, iv)
  4. for i := 0; i < b.N; i++ {
  5. encryptString, _ := aes.Encrypt("123456")
  6. aes.Decrypt(encryptString)
  7. }
  8. }
  9. // 输出
  10. goos: darwin
  11. goarch: amd64
  12. pkg: github.com/xinliangnote/go-gin-api/pkg/aes
  13. BenchmarkEncryptAndDecrypt-12 1000000 1009 ns/op
  14. PASS

RSA 非对称加密

  1. func BenchmarkEncryptAndDecrypt(b *testing.B) {
  2. b.ResetTimer()
  3. rsaPublic := NewPublic(publicKey)
  4. rsaPrivate := NewPrivate(privateKey)
  5. for i := 0; i < b.N; i++ {
  6. encryptString, _ := rsaPublic.Encrypt("123456")
  7. rsaPrivate.Decrypt(encryptString)
  8. }
  9. }
  10. // 输出
  11. goos: darwin
  12. goarch: amd64
  13. pkg: github.com/xinliangnote/go-gin-api/pkg/rsa
  14. BenchmarkEncryptAndDecrypt-12 1000 1345384 ns/op
  15. PASS

最后

JWT 的签名验证也使用过,分享一下 JWT 的基准测试,使用的是 jwt.SigningMethodHS256 方法。

  1. func BenchmarkSignAndParse(b *testing.B) {
  2. b.ResetTimer()
  3. token := New(secret)
  4. for i := 0; i < b.N; i++ {
  5. tokenString, _ := token.Sign(123456789, "xinliangnote")
  6. token.Parse(tokenString)
  7. }
  8. }
  9. // 输出
  10. goos: darwin
  11. goarch: amd64
  12. pkg: github.com/xinliangnote/go-gin-api/pkg/token
  13. BenchmarkSignAndParse-12 200000 11749 ns/op
  14. PASS

以上代码在 go-gin-api 项目中,地址:github.com/xinliangnote/go-gin-api

原文链接:http://www.cnblogs.com/xinliangcoder/p/14259997.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号