我在可可中編寫了一個小工具來計算文件的MD5,SHA-1和其他哈希函數。如果理解正確,至少可以通過這種方式實現MD5算法,我只需要同時載入文件的一小部分 - 這似乎是一個好主意,因爲我不想佔用全部用戶的RAM,然後一些用於計算10Gb存檔的散列。如何在不加載Cocoa的情況下訪問二進制文件數據?
我該如何使用Cocoa來實現這一目標?
我在可可中編寫了一個小工具來計算文件的MD5,SHA-1和其他哈希函數。如果理解正確,至少可以通過這種方式實現MD5算法,我只需要同時載入文件的一小部分 - 這似乎是一個好主意,因爲我不想佔用全部用戶的RAM,然後一些用於計算10Gb存檔的散列。如何在不加載Cocoa的情況下訪問二進制文件數據?
我該如何使用Cocoa來實現這一目標?
NSData
可以對文件進行內存映射,以便底層操作系統(Mac OS或iOS)虛擬內存系統根據需要自動在文件的各個部分中進行頁面瀏覽。使用NSData
構造函數中的參數options:
參數和NSDataReadingMappedIfSafe
or NSDataReadingMappedAlways
選項。
要做到這一點,沒有內存映射文件,可能會充滿,你可以使用NSFileHandle
,並使用-readDataOfLength:
只讀大小的數據塊。
你有可可三種選擇:
我有一個顯示在這裏使用流流的開源代碼:https://github.com/karelia/KSCrypto/blob/master/KSSHA1Stream.h
不錯。我不知道這件事。 –