Advertisement
Guest User

Untitled

a guest
Jun 24th, 2018
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.17 KB | None | 0 0
  1. const FLAG_SIZE: usize = 56;
  2. const FLAG_DATA_SIZE: usize = FLAG_SIZE * 2;
  3.  
  4. #[derive(Debug, Copy, Clone)]
  5. struct Unit {
  6. letter: u8,
  7. size: u8,
  8. }
  9.  
  10. fn deserialize(data: &Vec<u8>) -> Vec<Unit> {
  11. let mut secret = Vec::new();
  12. for (letter, size) in data.iter().tuples() {
  13. secret.push(Unit {
  14. letter: *letter,
  15. size: *size,
  16. });
  17. }
  18. secret
  19. }
  20.  
  21. fn decode(data: &Vec<Unit>) -> Vec<u8> {
  22. let mut res = Vec::new();
  23. for &Unit { letter, size } in data.iter() {
  24. res.extend(vec![letter; size as usize + 1].iter())
  25. }
  26. res
  27. }
  28.  
  29. fn decrypt(data: &Vec<u8>) -> Vec<u8> {
  30. key = get_key();
  31. iv = get_iv();
  32. openssl::symm::decrypt(
  33. openssl::symm::Cipher::aes_256_ctr(),
  34. &key,
  35. Some(&iv),
  36. data
  37. ).unwrap()
  38. }
  39.  
  40. fn store(data: &Vec<u8>) -> String {
  41. assert!(
  42. data.len() == FLAG_DATA_SIZE,
  43. "Wrong data size ({} vs {})",
  44. data.len(),
  45. FLAG_DATA_SIZE
  46. );
  47. let decrypted = decrypt(data);
  48. let secret = deserialize(&decrypted);
  49. let expanded = decode(&secret);
  50. base64::encode(&compute_sha3(&expanded)[..])
  51. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement