formalised project structure
This commit is contained in:
parent
897272d7c1
commit
6f8a7322f2
14 changed files with 177 additions and 71 deletions
61
bcrypt/debug.py
Normal file
61
bcrypt/debug.py
Normal file
|
|
@ -0,0 +1,61 @@
|
|||
from math import gcd
|
||||
from random import randint, randbytes
|
||||
|
||||
def debug_hashes_eq(x: bytes, R_table: dict[int, int]) -> bool:
|
||||
return hashfn(x, R_table) == bcrypt(x)
|
||||
|
||||
def debug_test_random_hashes(trials: int,
|
||||
max_bytes: int = 16,
|
||||
quiet: bool = False) -> bytes | None:
|
||||
R_table = precompute_R(0, 255)
|
||||
for i in range(trials):
|
||||
# generate random bytes
|
||||
num_bytes = randint(0, max_bytes)
|
||||
x = randbytes(num_bytes)
|
||||
|
||||
# test the modified bcrypt with the original
|
||||
hash_test = hashfn(x, R_table)
|
||||
hash_bcrypt = bcrypt(x)
|
||||
if hash_test != hash_bcrypt:
|
||||
if not quiet:
|
||||
print(f'Your hashfn sucks, big mistake bucko!! (iter: {i})')
|
||||
print(hash_test)
|
||||
print(hash_bcrypt)
|
||||
print([str(b) for b in x])
|
||||
return x
|
||||
|
||||
if not quiet:
|
||||
print('Impeccable hashfn holy moly!!')
|
||||
return None
|
||||
|
||||
|
||||
def main() -> None:
|
||||
print(f'gcd(H,K): {gcd(H,K)}')
|
||||
print(f'gcd(H,M): {gcd(H,M)}')
|
||||
print(f'gcd(K,M): {gcd(K,M)}')
|
||||
if debug_test_random_hashes(10000) != None:
|
||||
R_table = precompute_R(0, 255)
|
||||
x = bytes(input('x: '), 'utf-8')
|
||||
hash_test = hashfn(x, R_table)
|
||||
hash_bcrypt = bcrypt(x)
|
||||
print(f'hashfn: {hash_test}')
|
||||
print(f'bcrypt: {hash_bcrypt}')
|
||||
|
||||
# a = bytes(input("A: "), 'utf-8')
|
||||
# b = bytes(input("B: "), 'utf-8')
|
||||
|
||||
# if a != b and hashfn(a) == hashfn(b):
|
||||
# print('*** YOU WIN ***')
|
||||
# elif a == b:
|
||||
# print('Idiot those are the same')
|
||||
# else:
|
||||
# print("Trivially false!")
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
try:
|
||||
main()
|
||||
except KeyboardInterrupt:
|
||||
print('\n[!] Received SIGINT')
|
||||
except EOFError:
|
||||
print('\n[!] Reached EOF')
|
||||
Loading…
Add table
Add a link
Reference in a new issue