Ela*_*atz 0 javascript git md5 sha node.js
$ echo -e 'blob 14\0Hello, World!' | shasum
Run Code Online (Sandbox Code Playgroud)
生产: 8ab686eafeb1f44702738c8b0f24f2567c36da6d
在js/node中运行:
var sha1 = require('sha1');
const fileContents = "Hello, World!";
const length = fileContents.length + 1;
const blobString = `blob ${length}\0${fileContents}`;
const hash = sha1(blobString);
console.log(blobString);
console.log(hash);
Run Code Online (Sandbox Code Playgroud)
生产:
blob 14Hello, World!
d4fcfe4d339d4e59d168fdf3c0ad445fa980a7d6
Run Code Online (Sandbox Code Playgroud)
为什么哈希不平等?(8ab686eafeb1f44702738c8b0f24f2567c36da6d != d4fcfe4d339d4e59d168fdf3c0ad445fa980a7d6)
由于输入中换行符的不同,散列不相等.
echo添加换行符.printf改为使用:
printf 'blob 14\0Hello, World!' | shasum
# prints: d4fcfe4d339d4e59d168fdf3c0ad445fa980a7d6
Run Code Online (Sandbox Code Playgroud)
这也可以,但不是可移植的,因为echo在所有系统中都不会支持标记:
echo -ne 'blob 14\0Hello, World!' | shasum
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
45 次 |
| 最近记录: |