关于C#.Net怎么获取文件Hash值

新手上路,请多包涵

开发要判断文件的唯一性,所以要获取Hash。在github上有go和php的实现方法,但是两种语言都看不懂,无法转换,官方能发布C#.Net获取文件Hash的方法吗。

阅读 9.3k
2 个回答

七牛的 hash/etag 算法是公开的。算法大体如下:

  • 如果你能够确认文件 <= 4M,那么 hash = UrlsafeBase64([0x16, sha1(FileContent)])。也就是,文件的内容的sha1值(20个字节),前面加一个byte(值为0x16),构成 21 字节的二进制数据,然后对这 21 字节的数据做 urlsafe 的 base64 编码。
  • 如果文件 > 4M,则 hash = UrlsafeBase64([0x96, sha1([sha1(Block1), sha1(Block2), ...])]),其中 Block 是把文件内容切分为 4M 为单位的一个个块,也就是 BlockI = FileContent[I*4M:(I+1)*4M]

这是非常简单的一个公式,你完全可以自己依据算法说明写一个 hash/etag 的代码。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进