Cipher Fayadh
Block cipher Feistel 128-bit dengan fungsi putaran sigma-delta
Loading...
Searching...
No Matches
modes.hpp
Go to the documentation of this file.
1#ifndef MODES_HPP
2#define MODES_HPP
3
4#include "cipher.hpp"
5#include "util.hpp"
6
7#include <cstddef>
8#include <cstdint>
9#include <stdexcept>
10
15
16namespace modes {
17
19constexpr size_t PARALLEL_THRESHOLD_BLOCKS = 1024;
20
33void ctr_at(const uint8_t iv[BLOCK_SIZE], uint64_t i, uint8_t out[BLOCK_SIZE]);
34
47util::Bytes ecb_encrypt(const BlockCipher& cipher, const uint8_t* iv, const util::Bytes& in);
48
61util::Bytes ecb_decrypt(const BlockCipher& cipher, const uint8_t* iv, const util::Bytes& in);
62
75util::Bytes cbc_encrypt(const BlockCipher& cipher, const uint8_t* iv, const util::Bytes& in);
76
89util::Bytes cbc_decrypt(const BlockCipher& cipher, const uint8_t* iv, const util::Bytes& in);
90
103util::Bytes cfb_encrypt(const BlockCipher& cipher, const uint8_t* iv, const util::Bytes& in);
104
117util::Bytes cfb_decrypt(const BlockCipher& cipher, const uint8_t* iv, const util::Bytes& in);
118
131util::Bytes ofb_crypt(const BlockCipher& cipher, const uint8_t* iv, const util::Bytes& in);
132
140inline util::Bytes ofb_encrypt(const BlockCipher& cipher, const uint8_t* iv, const util::Bytes& in) {
141 return ofb_crypt(cipher, iv, in);
142}
143
151inline util::Bytes ofb_decrypt(const BlockCipher& cipher, const uint8_t* iv, const util::Bytes& in) {
152 return ofb_crypt(cipher, iv, in);
153}
154
167util::Bytes ctr_crypt(const BlockCipher& cipher, const uint8_t* iv, const util::Bytes& in);
168
176inline util::Bytes ctr_encrypt(const BlockCipher& cipher, const uint8_t* iv, const util::Bytes& in) {
177 return ctr_crypt(cipher, iv, in);
178}
179
187inline util::Bytes ctr_decrypt(const BlockCipher& cipher, const uint8_t* iv, const util::Bytes& in) {
188 return ctr_crypt(cipher, iv, in);
189}
190
191} // namespace modes
192
193#endif
Interface block cipher 128-bit dan implementasinya.
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
util::Bytes ecb_encrypt(const BlockCipher &cipher, const uint8_t *iv, const util::Bytes &in)
Enkripsi data menggunakan mode Electronic Codebook (ECB).
Definition modes.cpp:20
util::Bytes ctr_crypt(const BlockCipher &cipher, const uint8_t *iv, const util::Bytes &in)
Enkripsi/dekripsi data menggunakan mode Counter (CTR).
Definition modes.cpp:172
util::Bytes ofb_crypt(const BlockCipher &cipher, const uint8_t *iv, const util::Bytes &in)
Enkripsi/dekripsi data menggunakan mode Output Feedback (OFB).
Definition modes.cpp:152
util::Bytes ecb_decrypt(const BlockCipher &cipher, const uint8_t *iv, const util::Bytes &in)
Dekripsi data menggunakan mode Electronic Codebook (ECB).
Definition modes.cpp:38
void ctr_at(const uint8_t iv[BLOCK_SIZE], uint64_t i, uint8_t out[BLOCK_SIZE])
Menghitung nilai counter 128-bit big-endian pada indeks blok ke-i langsung: (IV + i) mod 2^128.
Definition modes.cpp:8
util::Bytes ctr_encrypt(const BlockCipher &cipher, const uint8_t *iv, const util::Bytes &in)
Alias enkripsi CTR, sama dengan modes::ctr_crypt.
Definition modes.hpp:176
util::Bytes ctr_decrypt(const BlockCipher &cipher, const uint8_t *iv, const util::Bytes &in)
Alias dekripsi CTR, sama dengan modes::ctr_crypt (keystream yang sama di-XOR ulang).
Definition modes.hpp:187
util::Bytes cfb_decrypt(const BlockCipher &cipher, const uint8_t *iv, const util::Bytes &in)
Dekripsi data menggunakan mode Cipher Feedback (CFB-128 full block).
Definition modes.cpp:127
util::Bytes cbc_decrypt(const BlockCipher &cipher, const uint8_t *iv, const util::Bytes &in)
Dekripsi data menggunakan mode Cipher Block Chaining (CBC).
Definition modes.cpp:79
util::Bytes cbc_encrypt(const BlockCipher &cipher, const uint8_t *iv, const util::Bytes &in)
Enkripsi data menggunakan mode Cipher Block Chaining (CBC).
Definition modes.cpp:56
util::Bytes ofb_encrypt(const BlockCipher &cipher, const uint8_t *iv, const util::Bytes &in)
Alias enkripsi OFB, sama dengan modes::ofb_crypt.
Definition modes.hpp:140
constexpr size_t PARALLEL_THRESHOLD_BLOCKS
Ambang batas minimum blok untuk mengaktifkan paralelisasi OpenMP (1024 blok = 16 KiB).
Definition modes.hpp:19
util::Bytes ofb_decrypt(const BlockCipher &cipher, const uint8_t *iv, const util::Bytes &in)
Alias dekripsi OFB, sama dengan modes::ofb_crypt (keystream yang sama di-XOR ulang).
Definition modes.hpp:151
util::Bytes cfb_encrypt(const BlockCipher &cipher, const uint8_t *iv, const util::Bytes &in)
Enkripsi data menggunakan mode Cipher Feedback (CFB-128 full block).
Definition modes.cpp:106
Fungsi utilitas pembantu untuk operasi byte, heksadesimal, I/O berkas, dan keacakan kriptografis.
std::vector< uint8_t > Bytes
Alias untuk representasi urutan byte dalam memori.
Definition util.hpp:17