0

我正在可可中编写一个小实用程序来计算文件的 MD5、SHA-1 和其他哈希函数。如果理解正确,至少 MD5 算法可以这样实现,我只需要同时加载文件的一小部分——这似乎是个好主意,因为我不想占用所有用户的 RAM,然后一些只是为了计算 10-Gb 存档的哈希值。

如何使用 Cocoa 实现这一目标?

4

3 回答 3

3

NSData可以对文件进行内存映射,以便底层操作系统(Mac OS 或 iOS)的虚拟内存系统根据需要自动在文件的各个部分中分页。使用NSData带有options:参数和NSDataReadingMappedIfSafeorNSDataReadingMappedAlways选项的构造函数之一。

于 2012-06-08T20:53:02.067 回答
1

要做到这一点而无需内存映射文件,这可能会令人担忧,您将使用NSFileHandle并读取任何大小的块中的数据,使用-readDataOfLength:.

于 2012-06-09T08:39:10.433 回答
1

您在可可中有三种选择:

  • 内存映射的 NSData
  • NSStream
  • NS文件句柄

我有开源代码显示 ow 在这里使用流:https ://github.com/karelia/KSCrypto/blob/master/KSSHA1Stream.h

于 2012-06-10T04:06:53.840 回答