Compare commits
2 commits
d5ea553977
...
037472fc07
Author | SHA1 | Date | |
---|---|---|---|
037472fc07 | |||
988d229bce |
11 changed files with 97 additions and 1 deletions
|
@ -0,0 +1 @@
|
||||||
|
49276d206b696c6c696e6720796f757220627261696e206c696b65206120706f69736f6e6f7573206d757368726f6f6d
|
2
data/02.txt
Normal file
2
data/02.txt
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
1c0111001f010100061a024b53535009181c
|
||||||
|
686974207468652062756c6c277320657965
|
1
data/03.txt
Normal file
1
data/03.txt
Normal file
|
@ -0,0 +1 @@
|
||||||
|
1b37373331363f78151b7f2b783431333d78397828372d363c78373e783a393b3736
|
|
@ -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
24
setup.cfg
Normal 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
|
14
src/cryptopals/cryptlib.py
Normal file
14
src/cryptopals/cryptlib.py
Normal 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
5
src/cryptopals/helper.py
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
def read_file(filepath):
|
||||||
|
with open(filepath, "r") as file:
|
||||||
|
content = file.read()
|
||||||
|
return content
|
||||||
|
|
17
tests/01.py
17
tests/01.py
|
@ -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
17
tests/02.py
Normal 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
15
tests/template.py
Normal 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()
|
Loading…
Add table
Add a link
Reference in a new issue