Golang中io包的ErrShortWrite

先说结论,在Golang中遇到io.ErrShortWrite错误时,也就是short write时,说明你写入的数据大小要比期望的要小,一般是结合bufio包一起使用时会碰到这个问题

原始代码不方便贴出来,这里给出一个简单的复现代码

密码学之MAC

消息认证码(英语:Message authentication code,缩写为MAC),又译为消息鉴别码、文件消息认证码、讯息鉴别码、信息认证码,是经过特定算法后产生的一小段信息,检查某段消息的完整性,以及作身份验证。它可以用来检查在消息传递过程中,其内容是否被更改过,不管更改的原因是来自意外或是蓄意攻击。同时可以作为消息来源的身份验证,确认消息的来源。

哈希算法

接收任意数据作为输入,返回独一无二的字节数组。输入相同,输出总是一致的。

如果我们下载es, 会看到如下步骤 它就是用sha512计算该文件的哈希值,随后用户可以利用该哈希值来判断下载的文件是否完整。这种机制它们提供完整性和真实性(你信任该网站,通过https)。 下图是哈希的一般流程。