[Node.js]計算檔案雜湊用來比對Cloud Storage的md5Hash
由於Cloud Storage返回的Metadata的md5Hash值是BASE64編碼過得資料,如下附圖,要比對是否相同需要生成相同的值。
這篇裡面會分別給予BASH指令和Node.js程式如何作用來比對GCS檔案的md5雜湊值
BASH指令
printf "$(md5sum "filePath")" | xxd -r -p | base64
參照2020年寫過得筆記:轉換/反轉換BASE64資料及HEX字串
Node.js程式
import crypto from 'node:crypto';
import fs from 'node:fs';
export function getFileMD5Base64(filePath) {
return new Promise((resolve, reject) => {
const hash = crypto.createHash('md5'); // 建立 MD5 雜湊
const input = fs.createReadStream(filePath); // 讀取檔案流
input.on('data', chunk => {
hash.update(chunk); // 更新雜湊值
});
input.on('end', () => {
const md5Sum = hash.digest('base64'); // 取得 Base64 編碼的 MD5 雜湊
resolve(md5Sum);
});
input.on('error', (err) => {
reject(err); // 捕捉錯誤
});
});
}
const md5 = await getFileMD5Base64(filePath);
console.log('md5:', md5);
留言