ファイルの MD5、SHA-1、およびその他のハッシュ関数を計算するための小さなユーティリティを cocoa で作成しています。正しく理解できれば、少なくとも MD5 アルゴリズムは、ファイルのごく一部を同時にロードするだけで済むような方法で実現できます。これは良い考えのように思えます。ユーザーの RAM に加えて、10 GB アーカイブのハッシュを計算するためだけに使用します。
Cocoaを使用してこれを達成するにはどうすればよいですか?
ファイルの MD5、SHA-1、およびその他のハッシュ関数を計算するための小さなユーティリティを cocoa で作成しています。正しく理解できれば、少なくとも MD5 アルゴリズムは、ファイルのごく一部を同時にロードするだけで済むような方法で実現できます。これは良い考えのように思えます。ユーザーの RAM に加えて、10 GB アーカイブのハッシュを計算するためだけに使用します。
Cocoaを使用してこれを達成するにはどうすればよいですか?
NSData
基盤となる OS (Mac OS または iOS) の仮想メモリ システムが必要に応じてファイルのセクションを自動的にページングするように、ファイルをメモリ マップできます。NSData
コンストラクターの 1 つをoptions:
パラメーターとNSDataReadingMappedIfSafe
orNSDataReadingMappedAlways
オプションと共に使用します。
ココアには次の 3 つの選択肢があります。
ここでストリームを使用する方法を示すオープン ソース コードがあります: https://github.com/karelia/KSCrypto/blob/master/KSSHA1Stream.h
ファイルをメモリ マッピングせずにこれを行うにはNSFileHandle
、-readDataOfLength:
.