Starting on s1c4
This commit is contained in:
		
							parent
							
								
									350dc555de
								
							
						
					
					
						commit
						c5f8321c84
					
				
					 1 changed files with 20 additions and 0 deletions
				
			
		| 
						 | 
				
			
			@ -4,11 +4,14 @@
 | 
			
		|||
extern crate cryptopals;
 | 
			
		||||
 | 
			
		||||
use std::f32;
 | 
			
		||||
use std::fs::File;
 | 
			
		||||
use std::io::{BufRead, BufReader};
 | 
			
		||||
use cryptopals::b64::Base64Encodable;
 | 
			
		||||
use cryptopals::hex::{HexDecodable, HexEncodable};
 | 
			
		||||
use cryptopals::letter_frequency::LetterFreq;
 | 
			
		||||
use cryptopals::xor::{FixedXOR, ByteXOR};
 | 
			
		||||
 | 
			
		||||
/// Base 64 encode some bytes.
 | 
			
		||||
#[test]
 | 
			
		||||
fn s1c1() {
 | 
			
		||||
    let input = "49276d206b696c6c696e6720796f757220627261696e206c696b65206120706f69736f6e6f7573206d757368726f6f6d";
 | 
			
		||||
| 
						 | 
				
			
			@ -17,6 +20,7 @@ fn s1c1() {
 | 
			
		|||
    assert_eq!(output, ex_output);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/// XOR two arrays of bytes together to get a new byte string.
 | 
			
		||||
#[test]
 | 
			
		||||
fn s1c2() {
 | 
			
		||||
    let a = "1c0111001f010100061a024b53535009181c";
 | 
			
		||||
| 
						 | 
				
			
			@ -28,6 +32,7 @@ fn s1c2() {
 | 
			
		|||
    assert_eq!(output, ex_output);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/// Determine the key for a single byte XOR encryption scheme using English letter frequency analysis.
 | 
			
		||||
#[test]
 | 
			
		||||
fn s1c3() {
 | 
			
		||||
    let input = "1b37373331363f78151b7f2b783431333d78397828372d363c78373e783a393b3736";
 | 
			
		||||
| 
						 | 
				
			
			@ -51,3 +56,18 @@ fn s1c3() {
 | 
			
		|||
    println!("{}: {:?} -> {}", best_key, best_output, best_score);
 | 
			
		||||
    assert!(best_output.to_lowercase().contains("bacon"));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/// Detect a single byte XOR encryption scheme using the letter frequency analysis from s1c3.
 | 
			
		||||
#[test]
 | 
			
		||||
fn s1c4() {
 | 
			
		||||
    let f = match File::open("resources/s1c4.txt") {
 | 
			
		||||
        Ok(f) => f,
 | 
			
		||||
        Err(e) => panic!("failed to open the strings file: {}", e),
 | 
			
		||||
    };
 | 
			
		||||
    let reader = BufReader::new(&f);
 | 
			
		||||
    for line in reader.lines() {
 | 
			
		||||
        let line = line.unwrap();
 | 
			
		||||
        println!("{:?}", line);
 | 
			
		||||
        let bytes = line.chars().hex_decoded();
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue