42 lines
1.2 KiB
Python
42 lines
1.2 KiB
Python
import os, matplotlib.pyplot as plt
|
|
|
|
path = '/home/benjamin/Desktop/bens_folder/school/m2/internship/work/romaric/me/'
|
|
|
|
os.chdir(path)
|
|
|
|
def getBinaryHash(hexHash):
|
|
binaryHash = "{0:b}".format(int(hexHash, 16))
|
|
binaryHash = (256 - len(binaryHash)) * '0' + binaryHash
|
|
return binaryHash
|
|
|
|
def getNumberOfLeadingBinaryZerosOfHash(hexHash):
|
|
binaryHash = getBinaryHash(hexHash)
|
|
return len(binaryHash) - len(binaryHash.lstrip('0'))
|
|
|
|
additionalZeros = {}
|
|
|
|
with open('hashes.txt') as f:
|
|
lines = f.read().splitlines()
|
|
for line in lines:
|
|
lineParts = line.split()
|
|
hash = lineParts[0]
|
|
target = lineParts[1]
|
|
leadingBinaryZerosHash = getNumberOfLeadingBinaryZerosOfHash(hash)
|
|
leadingBinaryZerosTarget = getNumberOfLeadingBinaryZerosOfHash(target)
|
|
#print(leadingBinaryZerosHash, leadingBinaryZerosTarget)
|
|
additionalZero = leadingBinaryZerosHash - leadingBinaryZerosTarget
|
|
if additionalZero in additionalZeros:
|
|
additionalZeros[additionalZero] += 1
|
|
else:
|
|
additionalZeros[additionalZero] = 1
|
|
|
|
X, Y = [], []
|
|
|
|
for i in range(max(additionalZeros) + 1):
|
|
if i in additionalZeros:
|
|
X += [i]
|
|
Y += [additionalZeros[i] / len(lines)]
|
|
|
|
plt.plot(X, Y)
|
|
plt.show()
|