Generatory ciągów

Ostatnio mnie wzięło na stworzenie własnej biblioteki w języku C++, która to biblioteka będzie zawierała różne rzeczy. 


Pierwszy generator ciągów już pozaliście w czasie czytania bloga. Otóż jest funkcja tworząca tablicę z zapisu „a-zA-Z”. Ta funkcja pochodzi z K&R ANSI C, a jej kod można znaleźć w tym poście.

Funkcja dla C++ zmieniła się tym, że wynik działania jest zwracany do vector<char>.


Drugim generatorem ciągów jest generator bazujący na przed zdefiniowanym alfabecie, który później generuje każdą możliwą kombinację przy użyciu tego słownika.

Taki generator może służyć do ataku typu brute-force.

Klasa WordGenerator posiada bardzo prosty interface:

  • (konstruktor) WordGenerator(void)
    Alfabet jest ustawiony na „a-zA-Z”. Pierwszym słowem jest „a”
  • (konstruktor) WordGenerator(char* range)
    Alfabet jest tworzony na podstawie podanego ciągu, interpretacja ciągu jest taka jak opisana w pierwszym generatorze.
  • (konstruktor) WordGenerator(char *range, std::string firstWord)
    firstWord – pozwala na ustawienie pierwszego słowa od którego będzie generowane kolejne.
  • (funkcja) std::string getCurrent()
    Zwraca ciąg który został wygenerowany
  • (funkcja) std::string generateNext()
    Generuje nowy ciąg który jest zwracany przez funkcje.

Kod: