在 <http://git.oschina.net/progit/1-%E8%B5%B7%E6%AD%A5.html> 上看到
Git 使用 SHA-1 算法计算数据的校验和,通过对文件的内容或目录的结构计算出一个 SHA-1 哈希值,作为指纹字符串。该字串由 40 个十六进制字符(0-9 及 a-f)组成,
我对 SHA-1 很好奇,我跳到 14 章,优先观看了关于哈希的内容。有些感悟,但是由于并不是介绍 SHA-1 是如何实现的,所以,我去网上搜索了一下 SHA-1
搜索到的内容千篇一律的是 SHA-1 的使用,使用Java的话,就是对 `java.security.MessageDigest` 的调用
好不容易找到一篇实现,<https://gitee.com/juedui0769/codes/5w8txuac6p132bhqgv7nf96> 但是看到下面的代码就傻了
`tmp[i >> 5] |= ((int) (str.charAt(i / chrsz)) & mask) << (24 - i % 32);`
第14章也讲了一个 `X & 0x7fffffff` X 一定变成正数, 这个是看懂了的,但是上面的这句有点复杂,没看懂,老师可以解毒一下吗,或者告诉下我从哪里开始学习这类二级制的操作?谢谢!