Skip to content

max-b/cryptofriends-rust

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

90 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Cryptofriends

My attempts at working through the cryptopals challenges while learning rust 🦀🦀🦀.

Challenges

Set 1 - Basics

  • Challenge 1: Convert hex to base64
  • Challenge 2: Fixed XOR
  • Challenge 3: Single-byte XOR cipher
  • Challenge 4: Detect single-character XOR
  • Challenge 5: Implement repeating-key XOR
  • Challenge 6: Break repeating-key XOR
  • Challenge 7: AES in ECB mode
  • Challenge 8: Detect AES in ECB mode

Set 2 - Block Crypto

  • Challenge 9: Implement PKCS#7 padding
  • Challenge 10: Implement CBC mode
  • Challenge 11: An ECB/CBC detection oracle
  • Challenge 12: Byte-at-a-time ECB decryption (Simple)
  • Challenge 13: ECB cut-and-paste
  • Challenge 14: Byte-at-a-time ECB decryption (Harder)
  • Challenge 15: PKCS#7 padding validation
  • Challenge 16: CBC bitflipping attacks

Set 3 - Block and Stream Crypto

  • Challenge 17: The CBC padding oracle
  • Challenge 18: Implement CTR, the stream cipher mode
  • Challenge 19: Break fixed-nonce CTR mode using substitutions
  • Challenge 20: Break fixed-nonce CTR statistically
  • Challenge 21: Implement the MT19937 Mersenne Twister RNG
  • Challenge 22: Crack an MT19937 seed
  • Challenge 23: Clone an MT19937 RNG from its output
  • Challenge 24: Create the MT19937 stream cipher and break it

Set 4 - Stream crypto and randomness

  • Challenge 25: Break "random access read/write" AES CTR
  • Challenge 26: CTR bitflipping
  • Challenge 27: Recover the key from CBC with IV=Key
  • Challenge 28: Implement a SHA-1 keyed MAC
  • Challenge 29: Break a SHA-1 keyed MAC using length extension
  • Challenge 30: Break an MD4 keyed MAC using length extension
  • Challenge 31: Implement and break HMAC-SHA1 with an artificial timing leak
  • Challenge 32: Break HMAC-SHA1 with a slightly less artificial timing leak

Set 5 - Diffie-Hellman and friends

  • Challenge 33: Implement Diffie-Hellman
  • Challenge 34: Implement a MITM key-fixing attack on Diffie-Hellman with parameter injection
  • Challenge 35: Implement DH with negotiated groups, and break with malicious "g" parameters
  • Challenge 36: Implement Secure Remote Password (SRP)
  • Challenge 37: Break SRP with a zero key
  • Challenge 38: Offline dictionary attack on simplified SRP
  • Challenge 39: Implement RSA
  • Challenge 40: Implement an E=3 RSA Broadcast attack

Set 6 - RSA and DSA

  • Challenge 41: Implement unpadded message recovery oracle
  • Challenge 42: Bleichenbacher's e=3 RSA Attack
  • Challenge 43: DSA key recovery from nonce
  • Challenge 44: DSA nonce recovery from repeated nonce
  • Challenge 45: DSA parameter tampering
  • Challenge 46: RSA parity oracle
  • Challenge 47: Bleichenbacher's PKCS 1.5 Padding Oracle (Simple Case)
  • Challenge 48: Bleichenbacher's PKCS 1.5 Padding Oracle (Complete Case)

About

Cryptopals implementations in Rust 🦀

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages