StartFingerprint()
Синтаксис
Result = StartFingerprint(#Fingerprint , Plugin [, Bits])
Описание
Инициализирует вычисление fingerprint (цифрового отпечатка ключа) в несколько этапов. В отличие от функции Fingerprint() это позволяет вычислить fingerprint больших данных без необходимости загружать их в один непрерывный буфер памяти.
Параметры
#Fingerprint Номер для ссылки на этот расчет контрольной суммы в последующих вызовах. Чтобы автоматически сгенерировать это число можно использовать #PB_Any. Plugin Используемый плагин. Может быть одно из следующих значений: #PB_Cipher_CRC32: Использует алгоритм CRC32. До регистрации плагина необходимо вызвать UseCRC32Fingerprint(). #PB_Cipher_MD5 : Использует алгоритм MD5. До регистрации плагина необходимо вызвать UseMD5Fingerprint(). #PB_Cipher_SHA1 : Использует алгоритм SHA1. До регистрации плагина необходимо вызвать UseSHA1Fingerprint(). #PB_Cipher_SHA2 : Использует алгоритм SHA2. До регистрации плагина необходимо вызвать UseSHA2Fingerprint(). #PB_Cipher_SHA3 : Использует алгоритм SHA3. До регистрации плагина необходимо вызвать UseSHA3Fingerprint().Bits (дополн.) Число бит, используемое для fingerprint. Этот параметр поддерживается только для следующего плагина: #PB_Cipher_SHA2 : Может быть 224, 256 (по умолчанию), 384 или 512. #PB_Cipher_SHA3 : Может быть 224, 256 (по умолчанию), 384 или 512.
Возвращаемое значение
Возвращает значение #Fingerprint, если для этого параметра было использовано #PB_Any.
Комментарии
Для добавления блоков памяти в вычисление можно использовать функцию AddFingerprintBuffer(). Чтобы завершить вычисление и прочитать полученный хеш используйте FinishFingerprint().
Пример
UseMD5Fingerprint() *Buffer = AllocateMemory(200) ; Подготовим буфер с данными If *Buffer PokeS(*Buffer, "Быстрая коричневая лиса прыгает через ленивую собаку.", -1, #PB_Ascii) Length = MemoryStringLength(*Buffer, #PB_Ascii) If StartFingerprint(0, #PB_Cipher_MD5) ; Начать расчет. AddFingerprintBuffer(0, *Buffer, Length/2) ; Вычислить часть 1. AddFingerprintBuffer(0, *Buffer+Length/2, Length/2) ; Вычислить часть 2. MD5$ = FinishFingerprint(0) ; Закончить расчет. Debug "MD5 checksum = " + MD5$ MD5$ = Fingerprint(*Buffer, Length, #PB_Cipher_MD5) ; Сравнить с расчетом в 1 шаг. Debug "MD5 checksum = " + MD5$ EndIf FreeMemory(*Buffer) EndIf
См. также
Fingerprint(), FileFingerprint(), StringFingerprint()
Поддерживаемые OS
Все