标签: sha1sum

如何在 Deno 中获取文件校验和?

刚从 Deno 开始,我试图弄清楚如何计算二进制文件校验和。在我看来,问题不在于标准库的哈希模块提供的方法,而在于文件流方法和/或提供 hash.update 方法的块的类型。我一直在尝试一些与文件打开和块类型相关的替代方案,但没有成功。一个简单的例子如下:

import {createHash} from "https://deno.land/std@0.80.0/hash/mod.ts";

const file= new File(["my_big_folder.tar.gz"], "./my_big_folder.tar.gz");
const iterator = file.stream() .getIterator();
const hash = createHash("md5");
for await( let chunk of iterator){
   hash.update(chunk);
}
console.log(hash.toString()); //b35edd0be7acc21cae8490a17c545928
Run Code Online (Sandbox Code Playgroud)

这段代码编译并运行没有错误,遗憾的是结果与我运行node提供的crypto模块的函数和linux coreutils提供的md5sum的结果不同。有什么建议吗?

节点代码:

const crypto = require('crypto');
const fs = require('fs');

const hash = crypto.createHash('md5');

const file = './my_big_folder.tar.gz';
const stream = fs.ReadStream(file);
stream.on('data', data=> { hash.update(data); });
stream.on('end', ()=> {
  console.log(hash.digest('hex')); //c18f5eac67656328f7c4ec5d0ef5b96f
});

Run Code Online (Sandbox Code Playgroud)

bash 中的结果相同:

$ md5sum ./my_big_folder.tar.gz
$ c18f5eac67656328f7c4ec5d0ef5b96f ./my_big_folder.tar.gz
Run Code Online (Sandbox Code Playgroud)

在 Windows 10 上可以使用:

import …
Run Code Online (Sandbox Code Playgroud)

checksum stream md5sum sha1sum deno

4
推荐指数
1
解决办法
999
查看次数

Linux bash:比较哈希字符串而不设置变量

我想要一个简单的bash命令来比较输出它们是否相同的两个哈希值.这是我尝试过的:

md5sum file1 | awk '{print $1}' # outputs hash value without filename

md5sum file1 > md5sum file2 # no output even though files/hashes differ

到目前为止,我已尝试过以下方面的变化,但没有成功:

[ md5sum states.txt | awk '{print $1}' == md5sum states_copy.txt | awk '{print $1}' ]

[ (md5sum states.txt | awk '{print $1}') == (md5sum states_copy.txt | awk '{print $1}') ]

我对脚本或多行bash解决方案开放,或者使用shasum,但我是Linux和bash的新手,所以尽量保持简单.

我正在运行Ubuntu 18.04.

linux bash awk md5sum sha1sum

1
推荐指数
1
解决办法
236
查看次数

标签 统计

md5sum ×2

sha1sum ×2

awk ×1

bash ×1

checksum ×1

deno ×1

linux ×1

stream ×1