PureBasic

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

Все

<- StartAESCipher() - Оглавление Cipher - StringFingerprint()->