Cipher Fayadh
Block cipher Feistel 128-bit dengan fungsi putaran sigma-delta
Loading...
Searching...
No Matches
round.hpp File Reference

Fungsi F (round function) Feistel berbasis sigma-delta. More...

#include <cstdint>

Go to the source code of this file.

Functions

uint64_t round_f (uint64_t r, uint64_t k)
 Fungsi F Feistel: menghasilkan masker 64 bit dari setengah blok dan round key.

Detailed Description

Fungsi F (round function) Feistel berbasis sigma-delta.

Function Documentation

◆ round_f()

uint64_t round_f ( uint64_t r,
uint64_t k )

Fungsi F Feistel: menghasilkan masker 64 bit dari setengah blok dan round key.

Dipanggil sekali per round sebagai L xor F(R, K[i]). Urutannya:

(w0, w1) = R // dua word 32 bit, w0 = bit atas
(k0, k1) = K // dua word 32 bit, k0 = bit atas
pass maju : w0 -> w1 (sigma-delta, state dibawa dari w0 ke w1)
w0 = rotl(w0, 7); w1 = rotl(w1, 19)
pass mundur: w1 -> w0 (sigma-delta, kunci k0 dan k1 ditukar)
hasil = permute_bits(w0 || w1)
uint64_t permute_bits(uint64_t x)
Permutasi bit: bit posisi i dipindah ke posisi (i * PERM_MULT) mod 64.
Definition permutation.cpp:3

Tiap langkah sigma-delta menyimpan state (akumulator dan feedback), jadi F tidak bisa dibalik. Feistel tidak butuh invers F, sehingga dekripsi cukup menghitung F lagi dengan input yang sama.

Parameters
[in]rSetengah blok (64 bit).
[in]kRound key (64 bit).
Returns
Masker 64 bit yang di-XOR ke setengah blok lainnya.
See also
permute_bits, sbox32