bkcrack 1.7.1
Crack legacy zip encryption with Biham and Kocher's known plaintext attack.
Zreduction.hpp
1#ifndef BKCRACK_ZREDUCTION_HPP
2#define BKCRACK_ZREDUCTION_HPP
3
4#include "Progress.hpp"
5#include "types.hpp"
6
9{
10public:
12 explicit Zreduction(const std::vector<std::uint8_t>& keystream);
13
15 void reduce(Progress& progress);
16
18 void generate();
19
21 auto getCandidates() const -> const std::vector<std::uint32_t>&;
22
24 auto getIndex() const -> std::size_t;
25
26private:
27 const std::vector<std::uint8_t>& keystream;
28 // After constructor or reduce(), contains Z[10,32) values.
29 // After generate(), contains Zi[2,32) values.
30 std::vector<std::uint32_t> zi_vector;
31 std::size_t index;
32};
33
34#endif // BKCRACK_ZREDUCTION_HPP
Structure to report the progress of a long operation or to cancel it.
Definition Progress.hpp:10
void generate()
Extend Zi[10,32) values into Zi[2,32) values using keystream.
auto getIndex() const -> std::size_t
void reduce(Progress &progress)
Reduce Zi[10,32) number using extra contiguous keystream.
auto getCandidates() const -> const std::vector< std::uint32_t > &
Zreduction(const std::vector< std::uint8_t > &keystream)
Constructor generating Zi[10,32) values from the last keystream byte.
Useful types, constants and utility functions.