Cipher Fayadh
Block cipher Feistel 128-bit dengan fungsi putaran sigma-delta
Loading...
Searching...
No Matches
cipher.hpp
Go to the documentation of this file.
1#ifndef CIPHER_HPP
2#define CIPHER_HPP
3
4#include <cstddef>
5#include <cstdint>
6
11
13constexpr size_t BLOCK_SIZE = 16;
15constexpr size_t KEY_SIZE = 16;
17constexpr int ROUNDS = 16;
18
29public:
30 virtual ~BlockCipher() = default;
31
37 virtual void encrypt_block(const uint8_t *in, uint8_t *out) const = 0;
38
44 virtual void decrypt_block(const uint8_t *in, uint8_t *out) const = 0;
45};
46
74class CustomCipher : public BlockCipher {
75public:
80 explicit CustomCipher(const uint8_t master_key[KEY_SIZE]);
81
82 void encrypt_block(const uint8_t *in, uint8_t *out) const override;
83 void decrypt_block(const uint8_t *in, uint8_t *out) const override;
84
85private:
86 uint64_t rk_[ROUNDS];
87};
88
89#endif
constexpr size_t KEY_SIZE
Ukuran master key dalam byte (128 bit, 16x8 bit).
Definition cipher.hpp:15
constexpr int ROUNDS
Jumlah round Feistel.
Definition cipher.hpp:17
constexpr size_t BLOCK_SIZE
Ukuran satu blok dalam byte (128 bit, 16x8 bit).
Definition cipher.hpp:13
Interface block cipher 128-bit.
Definition cipher.hpp:28
virtual void decrypt_block(const uint8_t *in, uint8_t *out) const =0
Dekripsi satu blok.
virtual void encrypt_block(const uint8_t *in, uint8_t *out) const =0
Enkripsi satu blok.
void decrypt_block(const uint8_t *in, uint8_t *out) const override
Dekripsi satu blok.
Definition cipher.cpp:31
CustomCipher(const uint8_t master_key[KEY_SIZE])
Buat cipher dan bangkitkan round key dari master key.
Definition cipher.cpp:15
void encrypt_block(const uint8_t *in, uint8_t *out) const override
Enkripsi satu blok.
Definition cipher.cpp:19