Wtyczka HashInfo



1. WPROWADZENIE

Wtyczka HashInfo dla NSIS dostarcza kilku kryptograficznych funkcji, które pozwalają na wygenerowanie wartości funkcji skrótu dla danego ciągu znaków lub pliku. Twórca instalatora (bazującego na NSIS) może skorzystać z jednego z wielu algorytmów funkcji skrótu.

Bieżąca wersja wtyczki pozwala na pobranie informacji dla kilku kategorii. Poniżej znajdziesz wszystkie funkcje obsługiwane przez wtyczkę wraz z opisem i przykładowym zastosowaniem. Więcej informacji o wtyczce HashInfo możesz znaleźć w pliku "HashInfoDemo.nsi", który dołączony jest do pliku archiwum wtyczki.


Wtyczka bazuje na bibliotece HashLib4Pascal, która zapewnia łatwy w użyciu interfejs do obliczania skrótów i sum kontrolnych.



2. SPOSÓB UŻYCIA

Function .onInit

  HashInfo::NazwaFunkcji "PARAMETR1" "PARAMETR2"
      ; Funkcja może przyjmować parametry
      ; Parametry i sposób ich użycia zależą od danej funkcji (wymagane są zawsze)

  Pop $0 
         ; Funkcja zwraca pobieraną wartość w zmiennej $0
         ; Funkcja zwraca "error", jeśli wystapi jakiś błąd

FunctionEnd

2.1. SUMA KONTROLNA

Suma kontrolna to niewielki blok danych uzyskany z innego bloku danych cyfrowych w celu wykrycia błędów, które mogły zostać wprowadzone podczas jego przesyłania lub przechowywania. Same sumy kontrolne są często używane do weryfikacji integralności danych, ale nie są wykorzystywane do weryfikacji autentyczności danych.

Dostępne Algorytmy Funkcji Skrótu: Adler-32

  1a. Oblicz wartość sumy kontrolnej dla danego CIĄGU ZNAKÓW

  ; Sposób Użycia
  ; HashInfo::NazwaFunkcji "PARAMETR1" "PARAMETR2"
       ; PARAMETR1 -> Algorytm Funkcji Skrótu (Wymagany)
       ; PARAMETR2 -> Ciąg Znaków (Wymagany)
       ; Uwagi:
       ; - Funkcja zwraca "error" w przypadku wystąpienia błędów

  StrCpy $R0 "Adler-32"     ; PARAMETR1
  StrCpy $R1 "Hello World" ; PARAMETR2
  HashInfo::GetStrCRCHash "$R0" "$R1"
  Pop $0 
  DetailPrint "   Algorytm Funkcji Skrótu: $R0"
  DetailPrint "   Wejściowy Ciąg Znaków: $R1"
  DetailPrint "   Wyjściowa wartość Funkcji Skrótu: $0"
  1b. Oblicz wartość sumy kontrolnej dla danego PLIKU

  ; Sposób Użycia
  ; HashInfo::NazwaFunkcji "PARAMETR1" "PARAMETR2"
       ; PARAMETR1 -> Algorytm Funkcji Skrótu (Wymagany)
       ; PARAMETR2 -> Pełna ścieżka dostępu do pliku (Wymagane)
       ; Uwagi:
       ; - Funkcja zwraca "error" w przypadku wystąpienia błędów

  StrCpy $R0 "Adler-32"    ; PARAMETR1
  StrCpy $R1 "$EXEPATH" ; PARAMETR2
  HashInfo::GetFileCRCHash "$R0" "$R1"
  Pop $0
  DetailPrint "   Algorytm Funkcji Skrótu: $R0"
  DetailPrint "   Plik wejściowy: $R1"
  DetailPrint "   Wyjściowa wartość Funkcji Skrótu: $0"

2.2. CYKLICZNA KONTROLA NADMIAROWA (CRC)

Cykliczna kontrola nadmiarowa (CRC) to kod wykrywania błędów powszechnie stosowany w sieciach cyfrowych i urządzeniach pamięci masowej do wykrywania przypadkowych zmian danych cyfrowych. Bloki danych wprowadzane do tych systemów otrzymują dołączoną krótką wartość kontrolną, opartą na pozostałej części wielomianowego podziału ich zawartości. Podczas pobierania obliczenia są powtarzane, a w przypadku, gdy wartości kontrolne nie są zgodne, można podjąć działania naprawcze przeciwko uszkodzeniu danych. CRC mogą być używane do korekcji błędów. CRC są tak nazywane, ponieważ wartość sprawdzania (weryfikacji danych) jest redundancją (rozszerza wiadomość bez dodawania informacji), a algorytm opiera się na kodach cyklicznych.

Dostępne Algorytmy Funkcji Skrótu:
CRC-3/GSM, CRC-3/ROHC, CRC-4/INTERLAKEN, CRC-4/ITU, CRC-4/G-704, CRC-5/EPC, CRC-5/EPC-C1G2, CRC-5/ITU, CRC-5/G-704, CRC-5/USB, CRC-6/CDMA2000-A, CRC-6/CDMA2000-B, CRC-6/DARC, CRC-6/GSM, CRC-6/ITU, CRC-6/G-704, CRC-7, CRC-7/MMC, CRC-7/ROHC, CRC-7/UMTS, CRC-8, CRC-8/SMBUS, CRC-8/AUTOSAR, CRC-8/BLUETOOTH, CRC-8/CDMA2000, CRC-8/DARC, CRC-8/DVB-S2, CRC-8/EBU, CRC-8/AES, CRC-8/TECH-3250, CRC-8/GSM-A, CRC-8/GSM-B, CRC-8/I-CODE, CRC-8/ITU, CRC-8/I-432-1, CRC-8/LTE, CRC-8/MAXIM, DOW-CRC, CRC-8/MAXIM-DOW, CRC-8/OPENSAFETY, CRC-8/ROHC, CRC-8/SAE-J1850, CRC-8/WCDMA, CRC-8/MIFARE-MAD, CRC-8/NRSC-5, CRC-10, CRC-10/ATM, CRC-10/I-610, CRC-10/CDMA2000, CRC-10/GSM, CRC-11, CRC-11/FLEXRAY, CRC-11/UMTS, CRC-12/CDMA2000, CRC-12/DECT, X-CRC-12, CRC-12/GSM, CRC-12/UMTS, CRC-12/3GPP, CRC-13/BBC, CRC-14/DARC, CRC-14/GSM, CRC-15, CRC-15/CAN, CRC-15/MPT1327, CRC-16, ARC, CRC-IBM, CRC-16/ARC, CRC-16/LHA, CRC-16/AUG-CCITT, CRC-16/SPI-FUJITSU, CRC-16/BUYPASS, CRC-16/VERIFONE, CRC-16/UMTS, CRC-16/CCITT-FALSE, CRC-16/AUTOSAR, CRC-16/IBM-3740, CRC-16/CDMA2000, CRC-16/CMS, CRC-16/DDS-110, CRC-16/DECT-R, R-CRC-16, CRC-16/DECT-X, X-CRC-16, CRC-16/DNP, CRC-16/EN13757, CRC-16/GENIBUS, CRC-16/EPC, CRC-16/I-CODE, CRC-16/DARC, CRC-16/EPC-C1G2, CRC-16/GSM, CRC-16/LJ1200, CRC-16/MAXIM, CRC-16/MAXIM-DOW, CRC-16/MCRF4XX, CRC-16/OPENSAFETY-A, CRC-16/OPENSAFETY-B, CRC-16/PROFIBUS, CRC-16/IEC-61158-2, CRC-16/RIELLO, CRC-16/T10-DIF, CRC-16/TELEDISK, CRC-16/TMS37157, CRC-16/USB, CRC-A, CRC-16/ISO-IEC-14443-3-A, KERMIT, CRC-16/CCITT, CRC-16/CCITT-TRUE, CRC-CCITT, CRC-16/KERMIT, CRC-16/V-41-LSB, MODBUS, CRC-16/MODBUS, X-25, CRC-16/IBM-SDLC, CRC-16/ISO-HDLC, CRC-16/ISO-IEC-14443-3-B, CRC-B, CRC-16/X-25, XMODEM, ZMODEM, CRC-16/ACORN, CRC-16/XMODEM, CRC-16/V-41-MSB, CRC-16/NRSC-5, CRC-17/CAN-FD, CRC-21/CAN-FD, CRC-24, CRC-24/OPENPGP, CRC-24/BLE, CRC-24/FLEXRAY-A, CRC-24/FLEXRAY-B, CRC-24/INTERLAKEN, CRC-24/LTE-A, CRC-24/LTE-B, CRC-24/OS-9, CRC-30/CDMA, CRC-31/PHILLIPS, CRC-32, CRC-32/ADCCP, CRC-32/V-42, CRC-32/XZ, PKZIP, CRC-32/ISO-HDLC, CRC-32/AUTOSAR, CRC-32/BZIP2, CRC-32/AAL5, CRC-32/DECT-B, B-CRC-32, CRC-32C, CRC-32/BASE91-C, CRC-32/CASTAGNOLI, CRC-32/INTERLAKEN, CRC-32/ISCSI, CRC-32D, CRC-32/BASE91-D, CRC-32/MPEG-2, CRC-32/POSIX, CKSUM, CRC-32Q, CRC-32/AIXM, JAMCRC, CRC-32/JAMCRC, XFER, CRC-32/XFER, CRC-32/CD-ROM-EDC, CRC-40/GSM, CRC-64, CRC-64/ECMA-182, CRC-64/GO-ISO, CRC-64/WE, CRC-64/XZ, CRC-64/GO-ECMA, CRC-64/1B, CRC-64/Jones

  1a. Oblicz wartość funkcji skrótu CRC dla danego CIĄGU ZNAKÓW

  ; Sposób Użycia
  ; HashInfo::NazwaFunkcji "PARAMETR1" "PARAMETR2"
       ; PARAMETR1 -> CRC Algorytm Funkcji Skrótu (Wymagany)
       ; PARAMETR2 -> Ciąg Znaków (Wymagany)
       ; Uwagi:
       ; - Funkcja zwraca "error" w przypadku wystąpienia błędów

  StrCpy $R0 "CRC-32"      ; PARAMETR1
  StrCpy $R1 "Hello World" ; PARAMETR2
  HashInfo::GetStrCRCHash "$R0" "$R1"
  Pop $0 
  DetailPrint "   Algorytm Funkcji Skrótu: $R0"
  DetailPrint "   Wejściowy Ciąg Znaków: $R1"
  DetailPrint "   Wyjściowa wartość Funkcji Skrótu: $0"
  1b. Oblicz wartość funkcji skrótu CRC dla danego PLIKU

  ; Sposób Użycia
  ; HashInfo::NazwaFunkcji "PARAMETR1" "PARAMETR2"
       ; PARAMETR1 -> CRC Algorytm Funkcji Skrótu (Wymagany)
       ; PARAMETR2 -> Pełna ścieżka dostępu do pliku (Wymagane)
       ; Uwagi:
       ; - Funkcja zwraca "error" w przypadku wystąpienia błędów

  StrCpy $R0 "CRC-32"     ; PARAMETR1
  StrCpy $R1 "$EXEPATH" ; PARAMETR2
  HashInfo::GetFileCRCHash "$R0" "$R1"
  Pop $0
  DetailPrint "   Algorytm Funkcji Skrótu: $R0"
  DetailPrint "   Plik wejściowy: $R1"
  DetailPrint "   Wyjściowa wartość Funkcji Skrótu: $0"

2.3. NIEKRYPTOGRAFICZNE FUNKCJE SKRÓTU

Niekryptograficzne funkcje skrótu zapewniają słabsze gwarancje w zamian za poprawę wydajności (nie zapewniają gwarancji bezpieczeństwa). Po prostu starają się unikać kolizji dla niezłośliwych danych wejściowych. Przykładem może być wykrycie uszkodzenia danych z powodu niestabilnej sieci.

Dostępne Algorytmy Funkcji Skrótu:
AP, Bernstein, Bernstein1, BKDR, DEK, DJB, ELF, FNV, FNV1a, Jenkins3, JS, Murmur2, MurmurHash3_x86_32, OneAtTime, PJW, Rotating, RS, SDBM, ShiftAndXor, SuperFast, XXHash32, FNV_64, FNV1a_64, Murmur2_64, SipHash2_4, XXHash64, SipHash128_2_4, MurmurHash3_x86_128, MurmurHash3_x64_128

  1a. Oblicz wartość Niekryptograficznej Funkcji Skrótu dla danego CIĄGU ZNAKÓW

  ; Sposób Użycia
  ; HashInfo::NazwaFunkcji "PARAMETR1" "PARAMETR2"
       ; PARAMETR1 -> Algorytm Funkcji Skrótu (Wymagany)
       ; PARAMETR2 -> Ciąg Znaków (Wymagany)
       ; Uwagi:
       ; - Funkcja zwraca "error" w przypadku wystąpienia błędów

  StrCpy $R0 "Bernstein"    ; PARAMETR1
  StrCpy $R1 "Hello World" ; PARAMETR2
  HashInfo::GetStrNonCryptoHash "$R0" "$R1"
  Pop $0
  DetailPrint "   Algorytm Funkcji Skrótu: $R0"
  DetailPrint "   Wejściowy Ciąg Znaków: $R1"
  DetailPrint "   Wyjściowa wartość Funkcji Skrótu: $0"
  1b. Oblicz wartość Niekryptograficznej Funkcji Skrótu dla danego PLIKU

  ; Sposób Użycia
  ; HashInfo::NazwaFunkcji "PARAMETR1" "PARAMETR2"
       ; PARAMETR1 -> Algorytm Funkcji Skrótu (Wymagany)
       ; PARAMETR2 -> Pełna ścieżka dostępu do pliku (Wymagane)
       ; Uwagi:
       ; - Funkcja zwraca "error" w przypadku wystąpienia błędów

  StrCpy $R0 "Bernstein"   ; PARAMETR1
  StrCpy $R1 "$EXEPATH"  ; PARAMETR2
  HashInfo::GetFileNonCryptoHash "$R0" "$R1"
  Pop $0
  DetailPrint "   Algorytm Funkcji Skrótu: $R0"
  DetailPrint "   Plik wejściowy: $R1"
  DetailPrint "   Wyjściowa wartość Funkcji Skrótu: $0"

2.4. KRYPTOGRAFICZNE FUNKCJE SKRÓTU

Kryptograficzne funkcje skrótu są specjalną klasą wśród funkcji skrótu, które mają na celu zapewnienie gwarancji bezpieczeństwa. Na przykład podczas uzyskiwania odcisku palca urządzenia należy użyć funkcji skrótu kryptograficznego, aby mieć więcej gwarancji co do unikalności jego wyjścia. Idealna funkcja skrótu kryptograficznego ma sześć głównych właściwości:

  • Deterministyczny: ta sama wiadomość zawsze daje tę sama wartość funkcji skrótu
  • Szybki: szybkie obliczenie wartości skrótu dla dowolnej wiadomości
  • Funkcja jednokierunkowa: niewykonalne jest generowanie wiadomości na podstawie jej wartości skrótu, z wyjątkiem próbowania wszystkich możliwych wiadomości
  • Efekt lawinowy: mała zmiana w wiadomości powinna zmienić wartość skrótu tak bardzo, że nowa wartość skrótu wydaje się nieskorelowana ze starą wartością skrótu
  • Odporny na kolizje: niemożliwe jest znalezienie dwóch różnych wiadomości o tej samej wartości skrótu
  • Pre-image attack resistant: atak typu Pre-image na funkcje skrótu kryptograficznego próbuje znaleźć wiadomość, która ma określoną wartość skrótu. Funkcja skrótu kryptograficznego powinna być odporna na tego typu atak.

Dostępne Algorytmy Funkcji Skrótu:
MD2, MD4, MD5, SHA0, SHA1, SHA2-224, SHA2-256, SHA2-384, SHA2-512, SHA2-512/224, SHA2-512/256, SHA3-224, SHA3-256, SHA3-384, SHA3-512, Blake2B-160, Blake2B-256, Blake2B-384, Blake2B-512, Blake2BP, Blake2S-128, Blake2S-160, Blake2S-224, Blake2S-256, Blake2SP, Blake3, GOST 34.11-94, GOST R 34.11-2012-256, GOST R 34.11-2012-512, Grindahl-256, Grindahl-512, Has160, RIPEMD, RIPEMD-128, RIPEMD-160, RIPEMD-256, RIPEMD-320, Snefru-128, Snefru-256, Panama, RadioGatun32, RadioGatun64, Keccak-224, Keccak-256, Keccak-288, Keccak-384, Keccak-512, WhirlPool

  1a. Oblicz wartość Kryptograficznej Funkcji Skrótu dla danego CIĄGU ZNAKÓW

  ; Sposób Użycia
  ; HashInfo::NazwaFunkcji "PARAMETR1" "PARAMETR2"
       ; PARAMETR1 -> Algorytm Funkcji Skrótu (Wymagany)
       ; PARAMETR2 -> Ciąg Znaków (Wymagany)
       ; Uwagi:
       ; - Funkcja zwraca "error" w przypadku wystąpienia błędów

  StrCpy $R0 "MD5"           ; PARAMETR1
  StrCpy $R1 "Hello World" ; PARAMETR2
  HashInfo::GetStrCryptoHash "$R0" "$R1"
  Pop $0
  DetailPrint "   Algorytm Funkcji Skrótu: $R0"
  DetailPrint "   Wejściowy Ciąg Znaków: $R1"
  DetailPrint "   Wyjściowa wartość Funkcji Skrótu: $0"
  1b. Oblicz wartość Kryptograficznej Funkcji Skrótu dla danego PLIKU

  ; Sposób Użycia
  ; HashInfo::NazwaFunkcji "PARAMETR1" "PARAMETR2"
       ; PARAMETR1 -> Algorytm Funkcji Skrótu (Wymagany)
       ; PARAMETR2 -> Pełna ścieżka dostępu do pliku (Wymagane)
       ; Uwagi:
       ; - Funkcja zwraca "error" w przypadku wystąpienia błędów

  StrCpy $R0 "MD5"         ; PARAMETR1
  StrCpy $R1 "$EXEPATH" ; PARAMETR2
  HashInfo::GetFileCryptoHash "$R0" "$R1"
  Pop $0
  DetailPrint "   Algorytm Funkcji Skrótu: $R0"
  DetailPrint "   Plik wejściowy: $R1"
  DetailPrint "   Wyjściowa wartość Funkcji Skrótu: $0"


3. POBIERANIE



WTYCZKA HASHINFO DLA NSIS
Funkcje kryptograficzne do generowania funkcji skrótu - Wtyczka HashInfo 2.0.0.0 (32/64-Bit UNICODE)


Wtyczka HashInfo dla NSIS (32/64-Bit Unicode)


Data wydania: 4 listopada 2022 (Pobrano: 10 razy)
Wersja: 2.0.0.0
Architektura: Windows (NSIS 32/64-Bit Unicode)
Licencja: Freeware
Prawa autorskie: Copyright © 2016 - 2023 Paweł Porwisz
Rozmiar pliku: 1,10 MB (1161145 bajtów)
Hash (SHA256): 6d0413a4269db52fef7b20fcf66590618b4536090bdddbcbd588490559ae7a5d





4. LICENCJA

Wtyczka HashInfo dla NSIS

Copyright © 2016 - 2022 Paweł Porwisz
Wszystkie prawa zastrzeżone


INSTALACJA LUB UŻYWANIE TEGO OPROGRAMOWANIA OZNACZA WYRAŻENIE ZGODY NA PONIŻSZĄ UMOWĘ LICENCYJNĄ.


OPROGRAMOWANIE JEST UDOSTĘPNIANE "W STANIE, W JAKIM SIĘ ZNAJDUJE", BEZ JAKIEJKOLWIEK GWARANCJI WYRAŹNEJ LUB DOROZUMIANEJ, W TYM BEZ GWARANCJI PRZYDATNOŚCI HANDLOWEJ, PRZYDATNOŚCI DO OKREŚLONEGO CELU ORAZ NIENARUSZALNOŚCI PRAW STRONY TRZECIEJ. WŁAŚCICIELE PRAW AUTORSKICH OKREŚLENI W NINIEJSZEJ INFORMACJI O UPRAWNIENIACH NIE SĄ W ŻADNYM WYPADKU ODPOWIEDZIALNI ZA JAKIEKOLWIEK ROSZCZENIA ANI ZA JAKIEKOLWIEK SZKODY SZCZEGÓLNE, POŚREDNIE LUB WTÓRNE, ANI ŻADNE INNE SZKODY WYNIKAJĄCE Z UTRATY MOŻLIWOŚCI UŻYTKOWANIA, UTRATY DANYCH LUB ZYSKÓW, BEZ WZGLĘDU NA TO, CZY PODSTAWĄ ROSZCZENIA SĄ WARUNKI UMOWY, ZANIEDBANIE LUB ODPOWIEDZIALNOŚĆ DELIKTOWA, POWSTAŁA W WYNIKU UŻYTKOWANIA TEGO OPROGRAMOWANIA LUB W ZWIĄZKU Z JEGO DZIAŁANIEM.