2017-12-09 14 views
0
$ echo -e 'blob 14\0Hello, World!' | shasum 

は生成:JS /ノードでこれを実行している8ab686eafeb1f44702738c8b0f24f2567c36da6dのgit shasumとノードSHA1が同じhasheを生じない

を:

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); 

は生成します。

blob 14Hello, World! 
d4fcfe4d339d4e59d168fdf3c0ad445fa980a7d6 

はなぜですハッシュは等しくない? (8ab686eafeb1f44702738c8b0f24f2567c36da6d != d4fcfe4d339d4e59d168fdf3c0ad445fa980a7d6

答えて

5

ハッシュは、入力の改行文字の違いのために等しくありません。 echo改行を追加します。代わりにprintfを使用してください:

printf 'blob 14\0Hello, World!' | shasum 
# prints: d4fcfe4d339d4e59d168fdf3c0ad445fa980a7d6 

echoのフラグがすべてのシステムでは予想どおりにサポートされていないので、これは、あまりにも動作しますが、のような携帯型ではない:

echo -ne 'blob 14\0Hello, World!' | shasum 
関連する問題