Compare commits

..

2 commits

Author SHA1 Message Date
037472fc07
first two challenges solved 2025-04-26 00:00:45 -04:00
988d229bce
attempt to import local packages 2025-04-25 20:32:42 -04:00
11 changed files with 97 additions and 1 deletions

View file

@ -0,0 +1 @@
49276d206b696c6c696e6720796f757220627261696e206c696b65206120706f69736f6e6f7573206d757368726f6f6d

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

View file

@ -1,6 +1,6 @@
[project] [project]
name = "cryptopals" name = "cryptopals"
version = "0.0.1" version = "0.1"
authors = [ authors = [
{ name="Joshua Flores", email="josh@heavyguys.net"}, { name="Joshua Flores", email="josh@heavyguys.net"},
] ]

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

5
src/cryptopals/helper.py Normal file
View file

@ -0,0 +1,5 @@
def read_file(filepath):
with open(filepath, "r") as file:
content = file.read()
return content

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():
hex_string = helper.read_file("../data/01.txt")
solution = cryptlib.hex_to_base64(hex_string)
print(solution.decode())
if __name__ == '__main__':
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()

15
tests/template.py Normal file
View file

@ -0,0 +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()