mac下获取文件的md5与sha1值

Mac下获取文件的MD5与sha1值


打开 Terminal,即Mac 的命令行 MD5——md5;SHA1——shasum
终端下输入:
1.md5 filepath 就会输出对应的MD5值
2. shasum filepath 就会输出对应的sha1值,并且shasum 命令默认检测 SHA1 值,而通过参数 -a 可以修改为 224、256、384 或 512
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以为您提供一个 TypeScript 的代码示例,使用 Web Workers 来实现大文件分片计算 SHA256、MD5SHA1 和 SHA512 哈希: ```typescript // 定义一个工作线程的类型,包含计算函数和计算类型 type WorkerType = { compute: (data: ArrayBuffer) => Promise<string>; type: string; }; // 定义一个函数,将文件分成多个 ArrayBuffer function splitFile(file: File, chunkSize: number): Promise<ArrayBuffer[]> { return new Promise((resolve, reject) => { const fileSize = file.size; const chunks = []; let offset = 0; const reader = new FileReader(); function readSlice() { if (offset >= fileSize) { resolve(chunks); return; } const slice = file.slice(offset, offset + chunkSize); reader.readAsArrayBuffer(slice); offset += chunkSize; } reader.addEventListener("load", () => { chunks.push(reader.result); readSlice(); }); reader.addEventListener("error", () => { reject(reader.error); }); readSlice(); }); } // 定义一个函数,创建一个工作线程,用于计算哈希 function createWorker(worker: WorkerType): Worker { const workerURL = URL.createObjectURL( new Blob([`(${worker.compute})()`], { type: "application/javascript" }) ); const hashWorker = new Worker(workerURL); return hashWorker; } // 定义一个函数,使用 Web Workers 并行计算文件的哈希 function computeHashes(file: File): Promise<{ [key: string]: string }> { const chunkSize = 1024 * 1024; // 分片大小为 1MB const workers = [ { compute: sha256, type: "SHA-256" }, { compute: md5, type: "MD5" }, { compute: sha1, type: "SHA-1" }, { compute: sha512, type: "SHA-512" }, ]; const promises = workers.map((worker) => { const hashWorker = createWorker(worker); const chunksPromise = splitFile(file, chunkSize); return chunksPromise.then((chunks) => { const hashPromises = chunks.map((chunk) => { return new Promise<string>((resolve) => { const message = { data: chunk }; const onMessage = (event: MessageEvent) => { hashWorker.removeEventListener("message", onMessage); resolve(event.data); }; hashWorker.addEventListener("message", onMessage); hashWorker.postMessage(message, [message.data]); }); }); return Promise.all(hashPromises).then((hashes) => ({ [worker.type]: hashes.join(""), })); }); }); return Promise.all(promises).then((results) => { const hashes = Object.assign({}, ...results); return hashes; }); } // SHA-256 计算函数 function sha256(): void { self.addEventListener("message", async (event: MessageEvent) => { const data = event.data as ArrayBuffer; const hashBuffer = await crypto.subtle.digest("SHA-256", data); const hashArray = Array.from(new Uint8Array(hashBuffer)); const hashHex = hashArray.map((b) => b.toString(16).padStart(2, "0")).join(""); self.postMessage(hashHex); }); } // MD5 计算函数 function md5(): void { self.addEventListener("message", async (event: MessageEvent) => { const data = event.data as ArrayBuffer; const hashBuffer = await crypto.subtle.digest("MD5", data); const hashArray = Array.from(new Uint8Array(hashBuffer)); const hashHex = hashArray.map((b) => b.toString(16).padStart(2, "0")).join(""); self.postMessage(hashHex); }); } // SHA-1 计算函数 function sha1(): void { self.addEventListener("message", async (event: MessageEvent) => { const data = event.data as ArrayBuffer; const hashBuffer = await crypto.subtle.digest("SHA-1", data); const hashArray = Array.from(new Uint8Array(hashBuffer)); const hashHex = hashArray.map((b) => b.toString(16).padStart(2, "0")).join(""); self.postMessage(hashHex); }); } // SHA-512 计算函数 function sha512(): void { self.addEventListener("message", async (event: MessageEvent) => { const data = event.data as ArrayBuffer; const hashBuffer = await crypto.subtle.digest("SHA-512", data); const hashArray = Array.from(new Uint8Array(hashBuffer)); const hashHex = hashArray.map((b) => b.toString(16).padStart(2, "0")).join(""); self.postMessage(hashHex); }); } ``` 使用方法: ```typescript const fileInput = document.getElementById("file-input") as HTMLInputElement; fileInput.addEventListener("change", async () => { const file = fileInput.files[0]; const hashes = await computeHashes(file); console.log(hashes); }); ``` 该示例使用 Web Workers 并行计算文件的 SHA256、MD5SHA1 和 SHA512 哈希。它将文件分成多个 ArrayBuffer,然后使用指定的算法计算每个 ArrayBuffer 的哈希。最后,它将所有哈希组合成一个包含 SHA256、MD5SHA1 和 SHA512 哈希的对象。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值