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

Uji avalanche effect pada CustomCipher::encrypt_block. More...

#include <cstdio>
#include <cstring>
#include "cipher.hpp"

Classes

struct  Stat
 Statistik persentase bit yang berubah (rata-rata, min, max). More...

Functions

static uint64_t next_rand ()
 PRNG deterministik (xorshift64).
static void fill_random (uint8_t *p, size_t n)
 Isi buffer dengan byte acak dari next_rand().
static int popcount_diff (const uint8_t *a, const uint8_t *b, size_t n)
 Hitung jumlah bit yang berbeda antara dua buffer (jarak Hamming).
int main ()
 Tes avalanche untuk bit plaintext dan bit kunci.

Variables

static const int TRIALS = 1000
 Jumlah percobaan (pasangan kunci dan plaintext acak).
constexpr size_t BLOCK_BITS = BLOCK_SIZE * 8
 Ukuran block dalam bit.
constexpr size_t KEY_BITS = KEY_SIZE * 8
 Ukuran key dalam bit.
static uint64_t rng_state = 0x123456789ABCDEF0ULL
 State PRNG. Seed tetap supaya hasil uji bisa direproduksi.

Detailed Description

Uji avalanche effect pada CustomCipher::encrypt_block.

Satu bit plaintext (atau satu bit kunci) dibalik, lalu dihitung persentase bit ciphertext yang berubah. Cipher yang baik menghasilkan nilai mendekati 50% (ideal).

Tiap percobaan memakai kunci dan plaintext acak, lalu membalik seluruh 128 bit plaintext dan 128 bit kunci satu per satu.

Jalankan dengan:

make avalanche
See also
sac.cpp untuk uji per pasangan bit input dan output.

Function Documentation

◆ fill_random()

void fill_random ( uint8_t * p,
size_t n )
static

Isi buffer dengan byte acak dari next_rand().

Parameters
[out]pBuffer tujuan.
[in]nJumlah byte yang diisi.

◆ main()

int main ( )

Tes avalanche untuk bit plaintext dan bit kunci.

Returns
0 (hanya mencetak hasil).

◆ next_rand()

uint64_t next_rand ( )
static

PRNG deterministik (xorshift64).

Returns
Nilai acak 64 bit berikutnya.
Note
Bukan PRNG kriptografis, hanya untuk generate test data.

◆ popcount_diff()

int popcount_diff ( const uint8_t * a,
const uint8_t * b,
size_t n )
static

Hitung jumlah bit yang berbeda antara dua buffer (jarak Hamming).

Parameters
[in]aBuffer pertama.
[in]bBuffer kedua.
[in]nPanjang kedua buffer dalam byte.
Returns
Jumlah bit yang berbeda, antara 0 dan 8 * n.