cryptopals

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs

1-7.rs (774B)


      1 use base64::prelude::*;
      2 use openssl::symm::{Cipher, decrypt};
      3 use std::io::{self, Read};
      4 
      5 fn main() -> Result<(), Box<dyn std::error::Error>> {
      6     let mut buffer = String::new();
      7     io::stdin().read_to_string(&mut buffer)?;
      8     let b64_data = buffer.replace('\n', "").replace('\r', "");
      9     const KEY: &str = "YELLOW SUBMARINE";
     10     let decoded = BASE64_STANDARD.decode(b64_data.as_bytes())?;
     11     let decrypted = decode_aes(&decoded, KEY)?;
     12     print!("{}", decrypted);
     13     Ok(())
     14 }
     15 fn decode_aes(input: &[u8], key_str: &str) -> Result<String, Box<dyn std::error::Error>> {
     16     let key = key_str.as_bytes();
     17     let iv: Option<&[u8]> = None;
     18     let cipher = Cipher::aes_128_ecb();
     19     let decoded = decrypt(cipher, key, iv, input)?;
     20     Ok(String::from_utf8(decoded)?)
     21 }