コード例 #1
0
ファイル: main.cpp プロジェクト: debunge/kuznezhik
int main(int argc, char **argv)
{
    printf("Config: bits: %d, optimize mult: %d, use mul table: %d, use tables: %d\n",
           get_bits(), use_galois(), use_mul_table(), use_tables());

    kuz_key_t key;
    w128_t x;
    uint32_t buf[0x100];
    clock_t tim;

    kuz_init();

    self_test();

    // == Speed Test ==

    for (int i = 0; i < 0x100; i++)
        buf[i] = i;
    kuz_set_encrypt_key(&key, testvec_key);

    for (int n = 4000, tim = 0; tim < 2 * CLOCKS_PER_SEC; n <<= 1) {
        tim = clock();
        for (int j = 0; j < n; j++) {
            for (int i = 0; i < 0x100; i += 4)
                kuz_encrypt_block(&key, &buf[i]);
        }
        tim = clock() - tim;
        printf("kuz_encrypt_block(): %.3f kB/s (n=%dkB,t=%.3fs)\r",
               ((double) CLOCKS_PER_SEC * n) / ((double) tim),
               n, ((double) tim) / ((double) CLOCKS_PER_SEC));
        fflush(stdout);
    }
    printf("\n");


    for (int i = 0; i < 0x100; i++)
        buf[i] = i;
    kuz_set_decrypt_key(&key, testvec_key);

    for (int n = 4000, tim = 0; tim < 2 * CLOCKS_PER_SEC; n <<= 1) {
        tim = clock();
        for (int j = 0; j < n; j++) {
            for (int i = 0; i < 0x100; i += 4)
                kuz_decrypt_block(&key, &buf[i]);
        }
        tim = clock() - tim;
        printf("kuz_decrypt_block(): %.3f kB/s (n=%dkB,t=%.3fs)\r",
               ((double) CLOCKS_PER_SEC * n) / ((double) tim),
               n, ((double) tim) / ((double) CLOCKS_PER_SEC));
        fflush(stdout);
    }
    printf("\n");

    printf("Tables: %.1fK (encrypt: %.1fK, decrypt: %.1fK)\n", (float)get_used_memory_count() / 1024, (float)get_encrypt_used_memory_count() / 1024, (float)get_decrypt_used_memory_count() / 1024);


    return 0;
}
コード例 #2
0
ファイル: main.cpp プロジェクト: debunge/kuznezhik
void self_test() {
    w128_t x;

    key_init();

    const uint8_t testvec_pt[16] = {
        0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x00,
        0xFF, 0xEE, 0xDD, 0xCC, 0xBB, 0xAA, 0x99, 0x88
    };
    const uint8_t testvec_ct[16] = {
        0x7F, 0x67, 0x9D, 0x90, 0xBE, 0xBC, 0x24, 0x30,
        0x5A, 0x46, 0x8D, 0x42, 0xB9, 0xD4, 0xED, 0xCD
    };

    printf("Self-test:\n");

    for (int i = 0; i < 10; i++) {
        printf("K_%d\t=", i + 1);
        print_w128(&encrypt_key.k[i]);
    }

    for (int i = 0; i < 16; i++)
        x.b[i] = testvec_pt[i];
    printf("PT\t=");
    print_w128(&x);

    kuz_encrypt_block(&encrypt_key, &x);

    printf("CT\t=");
    print_w128(&x);

    for (int i = 0; i < 16; i++) {
        if (testvec_ct[i] != x.b[i]) {
            fprintf(stderr, "Encryption self-test failure.\n");
            exit(-1);
        }
    }

    kuz_decrypt_block(&decrypt_key, &x);

    printf("PT\t=");
    print_w128(&x);

    for (int i = 0; i < 16; i++) {
        if (testvec_pt[i] != x.b[i]) {
            fprintf(stderr, "Decryption self-test failure.\n");
            exit(-2);
        }
    }

    printf("Self-test OK!\n");
}
コード例 #3
0
ファイル: block_cipher_algs.hpp プロジェクト: yekm/bench
 virtual void do_block(data_type * data) override
 {
     kuz_encrypt_block(&m_ctx, data);
 }