現在の位置: ホーム> 最新記事一覧> node.js cryptoモジュールを使用して、phpと同様のmd5_file()関数を実装する方法は?

node.js cryptoモジュールを使用して、phpと同様のmd5_file()関数を実装する方法は?

M66 2025-06-28

PHPでは、 MD5_FILE()は、ファイルのMD5ハッシュ値を計算するための非常に便利な機能です。使用は非常に簡単です:

<Code> $ hash = md5_file( 'path/to/file.txt'); </code>

これは、ファイルの整合性検証、キャッシュアイデンティティの生成などのシナリオで非常に実用的です。ただし、node.jsのMD5_File()と完全に同等の組み込み関数はありません。ただし、node.jsのコアモジュール暗号FSモジュールの助けを借りて、同様の機能を手動で実装できます。

node.js実装のアイデア

node.jsのcryptoモジュールは強力な暗号化機能を提供しますが、 FSモジュールでは、ストリームでファイルコンテンツを読み取ることができます。これら2つを組み合わせることで、ファイルの内容を読み取り、MD5値をリアルタイムで計算できます。

以下は実装コードです。

<code> const fs = require( 'fs'); const crypto = require( 'crypto');

関数md5file(filepath){
新しい約束を返す((解決、拒否)=> {
const hash = crypto.createhash( 'md5');
const stream = fs.createreadstream(filepath);

 stream.on('data', chunk => hash.update(chunk));
stream.on('end', () => resolve(hash.digest('hex')));
stream.on('error', reject);

});
}

//例を使用します
md5file( 'embles.txt')
.then(hash => {
console.log( 'md5:'、hash);
})
.catch(err => {
console.error( 'エラー読み取りファイル:'、err);
});
</code>

この関数は約束を返します。これは、ファイルが正常に読み取られてハッシュされたときに対応するMD5値を返します。

高度な使用法:アップロード検証と組み合わせます

アップロードサービスを構築し、ユーザーがアップロードしたファイルがアップロードの前後に一貫しているかどうかを確認する必要があるとします。 MD5値を、アップロードする前に、サーバーで生成された値と比較できます。

<code> app.post( '/upload'、(req、res)=> {const uploadedfilepath = '/tmp/uploaded.file';

//ファイルをアップロードしたFilePathに保存したとします
md5file(uploadedfilepath).then(serverhash => {
const clienthash = req.body.md5;

 if (serverHash === clientHash) {
  res.send('一貫したファイル');
} else {
  res.status(400).send('ファイル検証に失敗しました');
}

})。catch(()=> {
Res.Status(500).send( 'internal error');
});
});
</code>

ブラウザ側でMD5値を生成します

完全な機能を達成するには、クライアントがアップロードされる前にファイルのMD5値を作成する必要もあります。ブラウザ側では、 SparkMD5やFileReader APIなどのライブラリを使用して、ファイルのハッシュ値を計算できます。

まとめ

node.jsにはPHPでmd5_file()のショートカット関数はありませんが、暗号モジュールFSモジュールを介して同様の機能を簡単に実装できます。ストリーミング処理を使用することにより、高性能ファイルの検証および処理サービスの構築に適した大きなファイルを処理するときに、メモリ効率を確保することもできます。