|
Cipher Fayadh
Block cipher Feistel 128-bit dengan fungsi putaran sigma-delta
|
Uji Strict Avalanche Criterion (SAC) pada CustomCipher::encrypt_block. 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 | get_bit (const uint8_t *p, size_t i) |
| Ambil satu bit dari buffer. | |
| static void | report (const char *name, size_t in_bits, const int counts[][BLOCK_BITS]) |
| Cetak ringkasan matriks SAC. | |
| int | main () |
| SAC untuk bit plaintext dan bit kunci. | |
Variables | |
| static const int | TRIALS = 2000 |
| 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. | |
Uji Strict Avalanche Criterion (SAC) pada CustomCipher::encrypt_block.
Untuk tiap pasangan (bit input i, bit output j), diukur peluang bit output j berubah ketika bit input i dibalik. Cipher yang baik menghasilkan ~50% untuk semua pasangan, bukan hanya rata-ratanya (lebih ketat dari avalanche.cpp).
Dilakukan dua kali:
Karena jumlah percobaan terbatas, tiap sel punya galat acak. Di bawah hipotesis p = 0.5, simpangan bakunya sigma = 50% / sqrt(TRIALS). Sel yang menyimpang lebih dari 4 sigma jarang terjadi (sekitar 6.3e-5 per sel).
Jalankan dengan:
|
static |
Isi buffer dengan byte acak dari next_rand().
| [out] | p | Buffer tujuan. |
| [in] | n | Jumlah byte yang diisi. |
|
inlinestatic |
Ambil satu bit dari buffer.
| [in] | p | Buffer sumber. |
| [in] | i | Indeks bit (bit 0 = LSB byte pertama). |
| int main | ( | ) |
SAC untuk bit plaintext dan bit kunci.
|
static |
PRNG deterministik (xorshift64).
|
static |
Cetak ringkasan matriks SAC.
Yang diprint:
| [in] | name | Label bagian keluaran. |
| [in] | in_bits | Jumlah bit input yang dibalik (jumlah baris matriks). |
| [in] | counts | counts[i][j] = berapa kali bit output j berubah saat bit input i dibalik, dari TRIALS percobaan. |