当前位置: 首页 > news >正文

徐州住房和城乡建设局网站服装网站建设建议

徐州住房和城乡建设局网站,服装网站建设建议,婚纱摄影网站定制,烟台建设联合会网站目录 什么是 HMAC HMAC 的主要用途 HMAC 的工作原理 Golang 中的 crypto/hmac 包 如何选择合适的哈希函数和密钥长度 小结 什么是 HMAC HMAC#xff08;Hash-based Message Authentication Code#xff09;是一种基于 Hash 函数和密钥的消息认证码#xff0c;由 H.Kr…目录 什么是 HMAC HMAC 的主要用途 HMAC 的工作原理 Golang 中的 crypto/hmac 包 如何选择合适的哈希函数和密钥长度 小结 什么是 HMAC HMACHash-based Message Authentication Code是一种基于 Hash 函数和密钥的消息认证码由 H.KrawezykM.BellareR.Canetti 于1996年提出的一种基于 Hash 函数和密钥进行消息认证的方法并于1997年作为 RFC2104 被公布。HMAC 将密钥、消息和哈希函数一起使用确保消息在传输过程中不被篡改还可以验证消息的发送者身份。 HMAC 的主要用途 HMAC 主要用于以下几个方面 校验数据的完整性HMAC可以用于校验数据在传输过程中是否被篡改接收者通过计算接收到的消息的 HMAC与接收到的 HMAC 进行比较如果相同的话可以认为数据是完整的。用于身份验证HMAC 还可以用于验证消息的发送者。因为 HMAC 的计算需要一个密钥只有知道这个密钥的人才能生成正确的 HMAC。所以如果一个消息的 HMAC 是正确的可以认为这个消息确实来自声称的发送者典型的使用场景是 OpenAPI。防止重放攻击在某些情况下HMAC 还可用于防重放攻击。在消息中添加一个时间戳或序列号并参与 HMAC 的计算接收者可以拒绝那些具有旧时间戳或序列号的消息从而防止攻击者重放旧消息。安全协议HMAC 在很多安全协议中都有应用例如 IPSec用于保护 Internet Protocol 通信和 TLS用于保护 Web 通信。这些协议使用 HMAC 来确保数据的完整性和验证发送者的身份。 HMAC 的工作原理 HMAC 的典型使用方式如下 确定一个哈希函数如 SHA256 或 MD5和一个密钥。通过将密钥和消息组合并通过哈希函数运算生成固定大小的数据称为消息认证码。当消息接收者收到消息和 HMAC 时使用同样的密钥和哈希函数对接收到的消息进行运算然后将结果与接收到的 HMAC 进行比较如果相同消息就被认为是完整的且未被篡改并且确实来自声称的发送者。 Golang 中的 crypto/hmac 包 Golang 中的 crypto/hmac 包提供了 HMAC 的实现方法。以下是 crypto/hmac 包的一些主要函数和用法 New 函数接收一个哈希函数和一个密钥返回一个用来计算 HMAC 的 hash.Hash。 h : hmac.New(sha256.New, key) Write 方法可以向 HMAC 添加数据实现了 io.Writer 接口。 _, err : h.Write(data) if err ! nil {log.Fatal(err) } Sum 方法返回当前的哈希值作为字节切片。可以选择提供一个已存在的字节切片哈希值会被追加到这个切片的末尾。 result : h.Sum(nil) Equal 函数用于比较两个 HMAC 是否相等这个函数可以防止 timing attack 类型的攻击使用相同的时间来进行比较。 isValid : hmac.Equal(mac1, mac2) 可以看出Equal函数并不是简单地使用运算符来比较两个 HMAC 值而是使用了一种叫做constant time comparison的技术来做比较。这种技术可以确保比较花费的时间不依赖比较的数据从而防止 timing attack 类型的攻击。攻击者通过计算比较操作花费的时间可以推断出一些关于数据的信息。例如如果比较操作花费的时间和字节数有某种关系攻击者就可以通过改变输入观察比较操作花费时间的变化从而推断出正确的 HMAC 值。 以下是一个使用 crypto/hmac 包生成 HMAC 的例子代码如下 package mainimport (crypto/hmaccrypto/sha256fmt )func main() {key : []byte(secret key)data : []byte(message to authenticate)h : hmac.New(sha256.New, key)_, err : h.Write(data)if err ! nil {fmt.Println(Error writing to HMAC:, err)return}result : h.Sum(nil)fmt.Printf(HMAC: %x\n, result) }这个例子是使用 SHA-256 作为底层的哈希函数但也可以使用任何实现了 hash.Hash 接口的哈希函数。 如何选择合适的哈希函数和密钥长度 选择 HMAC 的哈希函数和密钥长度时需要考虑以下几个因素 安全需求安全需求是决定哈希函数和密钥长度选择的最重要因素。如果需要更高的安全性应该选择更强大的哈希函数和更长的密钥。例如SHA-256 或 SHA-3。性能需求更强大的哈希函数和更长的密钥通常会更耗性能。如果系统对性能有严格的要求可能需要在安全性和性能之间做出权衡。兼容性如果系统需要与其他系统交互可能需要选择一个与其他系统兼容的哈希函数和密钥长度。 关于哈希函数应该选择一个被广泛接受并且经过了严格安全检验的哈希函数。SHA-256 是被广泛接受的一种哈希算法不仅提供了足够的安全性并且在大多数现代硬件上都有很好的性能。 关于密钥长度一般来说密钥的长度应该至少与哈希函数的输出长度相同。例如如果使用了 SHA-256那么密钥长度应该至少为256位。如果密钥太短可能会降低 HMAC的安全性。如果密钥太长浪费服务器资源不说也不会进一步提高 HMAC 的安全性。所以选择一个与哈希函数输出长度相同的密钥长度是一个好的选择。 小结 本文详细讲解了如何在 Golang 中实现 HMAC首先介绍了 HMAC 的基本概念和用途。然后详细讲解了 HMAC 的工作原理包括如何选择哈希函数和密钥。希望能帮助你理解和有效使用 HMAC 来提高程序的全性。
http://www.laogonggong.com/news/140683.html

相关文章:

  • 怎么制作网站全球优秀企业网站
  • 嘉兴网站搜索排名wordpress漫画模板
  • 佛山美容院网站建设微信微网站开发策划
  • 春蕾科技 网站建设公众号怎么绑定网站吗
  • 网站建设 网页设计 的文章机械毕业设计代做网站
  • 做网站的需求文档格式制作免费网页教程
  • 淘宝联盟个人网站怎么做宿州网站制作公司
  • 模板网站建设源码dw表格怎么做网站搜索
  • 图片展示 网站校友录网站开发设计
  • 汕头哪里学网站建设最好如何做好精准营销
  • 加强网站建设工作wordpress朗读句子插件
  • 网站建设基本流程信息技术团购网站开发的可行性分析
  • 舞蹈培训网站模板公益网站建设的意义
  • 网络文化有限公司网站建设策划书大型网站建站公司 上市
  • 达内网站建设wordpress缩略图利器
  • 湖南信息网官方网站专有网络WordPress
  • 网站信息登记表微商城网站建设报价
  • 青岛做网络直播的网站云服务器网站配置
  • 电商网站建设渠道贵阳企业网站
  • 免费网站模板建设有一个网站需要什么
  • wordpress 软件站主题虎牙网页游戏大厅
  • ppt代做网站wordpress更改ip后登录密码错误
  • 微软做网站开发app怎么赚钱
  • 专注专业网站建设网站首页为什么不收录
  • 电商网站设计公司皆选亿企邦女生做a视频的网站是什多少
  • 莱州网站建设多少钱网页与网站的关系
  • 进入网站wordpress配置wordpress 浮动导航插件
  • 在百度做个卷闸门网站怎么做深圳网站设计公司排名前十
  • 律师网站建设与维护北京设计机构
  • 怎麽做网站wordpress购买阅读