first two challenges solved

This commit is contained in:
Joshua Flores 2025-04-26 00:00:45 -04:00
parent 988d229bce
commit 037472fc07
No known key found for this signature in database
GPG key ID: CE41E342DBBBB9B7
8 changed files with 77 additions and 12 deletions

2
data/02.txt Normal file
View file

@ -0,0 +1,2 @@
1c0111001f010100061a024b53535009181c
686974207468652062756c6c277320657965

1
data/03.txt Normal file
View file

@ -0,0 +1 @@
1b37373331363f78151b7f2b783431333d78397828372d363c78373e783a393b3736

24
setup.cfg Normal file
View file

@ -0,0 +1,24 @@
[metadata]
name = cryptopals
version = 0.1
author = Joshua Flores
author_email = josh@heavyguys.net
description = Cryptopals Solutions
long_description = file: README.md, LICENSE.txt
long_description_content_type = text/markdown
url = https://git.heavyguys.net/Josh/cryptopals
project_urls =
repository = https://git.heavyguys.net/Josh/cryptopals.git
classifiers =
Programming Language :: Python :: 3
License :: OSI Approved :: MIT License
Operating System :: OS Independent
[options]
package_dir =
= src
packages = find:
python_requires = >=3.9
[options.packages.find]
where = src

View file

@ -0,0 +1,14 @@
import base64
# this function takes a string representing hex, converts to bytes, and re-encodes to base64
def hex_to_base64(hex_string):
byte_array = bytearray.fromhex(hex_string)
base64_value = base64.b64encode(byte_array)
return base64_value
# this function takes two hex strings, converts them to bytes, and xor's them
def byte_xor(bs1, bs2):
byte_array1 = int(bs1,16)
byte_array2 = int(bs2,16)
return byte_array1 ^ byte_array2

View file

@ -1,9 +0,0 @@
import base64
# this function takes a string representing hex, converts to bytes, and re-encodes to base64
def hex_to_base64(hex_string)
byte_array = bytearray.fromhex(hex_string)
base64_value = base64.b64encode(byte_array)
return base64_value

View file

@ -1,10 +1,16 @@
#!/usr/bin/env python
from cryptopals import helper
from cryptopals import cryptopals
import os, sys
module_dir = os.path.relpath('../src/cryptopals')
sys.path.insert(0, module_dir)
import helper, cryptlib
def main():
pass
hex_string = helper.read_file("../data/01.txt")
solution = cryptlib.hex_to_base64(hex_string)
print(solution.decode())
if __name__ == '__main__':

17
tests/02.py Normal file
View file

@ -0,0 +1,17 @@
#!/usr/bin/env python
import os, sys
module_dir = os.path.relpath('../src/cryptopals')
sys.path.insert(0, module_dir)
import helper, cryptlib
def main():
content = helper.read_file("../data/02.txt")
hexstring_list = content.splitlines()
solution = cryptlib.byte_xor(hexstring_list[0], hexstring_list[1])
print(hex(solution)[2:])
if __name__ == '__main__':
main()

View file

@ -1,5 +1,15 @@
#!/usr/bin/env python
import os, sys
module_dir = os.path.relpath('../src/cryptopals')
sys.path.insert(0, module_dir)
import helper, cryptlib
def main():
pass
if __name__ == '__main__':
main()