Cryptopals вызывает 6 неверных результатов при расчете размера ключа - PullRequest
0 голосов
/ 22 января 2019

Я работаю над проблемами Cryptopals , и я застрял в задаче 6. Я написал следующий код Rust для вычисления размеров ключей, как указано в задаче, и я получаю странные результаты.

fn get_keysizes(mut ciphertext: Vec<u8>) -> Vec<(usize, u64)> {
    let mut sizelist: Vec<(usize, u64)> = Vec::new();

    for keysize in 2..41 {
        let blocks: Vec<&[u8]> = ciphertext.chunks(keysize).collect();
        sizelist.push((keysize, get_hamming_distance(blocks[0], blocks[1]) / keysize as u64));
    }
    sizelist.sort_by(|x, y| x.1.cmp(&y.1));
    println!("{:?}", sizelist);
    sizelist
}

Я зашифровал строку For each KEYSIZE, take the first KEYSIZE worth of bytes, and the second KEYSIZE worth of bytes, and find the edit distance between them. Normalize this result by dividing by KEYSIZE. с повторяющимся ключом XOR, используя the cryptopals crypto challenges в качестве ключа, и передал зашифрованный текст в мою функцию, и он вычислил длину ключа как 3.

Несмотря на то, что я следовал алгоритму в задании, возможно, я его неправильно истолковал.

Я понятия не имею, почему он не работает, я прочитал много статей о том, как решить этот вызов, но ни одногоиз них следуйте алгоритму в вызове.

...