|
Cipher Fayadh
Block cipher Feistel 128-bit dengan fungsi putaran sigma-delta
|
Uji avalanche effect pada CustomCipher::encrypt_block. More...
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. | |
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:
|
static |
Isi buffer dengan byte acak dari next_rand().
| [out] | p | Buffer tujuan. |
| [in] | n | Jumlah byte yang diisi. |
| int main | ( | ) |
Tes avalanche untuk bit plaintext dan bit kunci.
|
static |
PRNG deterministik (xorshift64).
|
static |
Hitung jumlah bit yang berbeda antara dua buffer (jarak Hamming).
| [in] | a | Buffer pertama. |
| [in] | b | Buffer kedua. |
| [in] | n | Panjang kedua buffer dalam byte. |