我在cocoa中编写了一个小实用程序来计算文件的MD5,SHA-1和其他哈希函数。如果理解正确,至少MD5算法可以通过这样的方式实现,我只需要同时加载文件的一小部分 - 这似乎是一个好主意,因为我不想占用所有用户的RAM,然后一些只是为了计算10-Gb存档的哈希值。
如何使用Cocoa实现这一目标?
答案 0 :(得分:3)
NSData
可以对文件进行内存映射,以便底层操作系统(Mac OS或iOS)虚拟内存系统根据需要自动分页文件的各个部分。使用其中一个NSData
构造函数和options:
参数以及NSDataReadingMappedIfSafe
or NSDataReadingMappedAlways
选项。
答案 1 :(得分:1)
要做到这一点,没有内存映射文件,这可能是充满了,你可以使用NSFileHandle
,只需使用-readDataOfLength:
以任何大小的块读取数据。
答案 2 :(得分:1)
你在cocoa中有三个选择:
我有开源代码显示ow在这里使用流:https://github.com/karelia/KSCrypto/blob/master/KSSHA1Stream.h