Files
nosys_libs/fspn/utils/sha256_util.py
2026-01-25 13:55:46 +10:00

67 lines
1.6 KiB
Python

import hashlib
def hash_file(filepath):
BUF_SIZE = 65 * 1024
sha = hashlib.sha256()
with open(filepath, 'rb') as f:
while True:
data = f.read(BUF_SIZE)
if not data:
break
sha.update(data)
return sha.hexdigest()
def hash_bytes(data):
sha = hashlib.sha256()
sha.update(data)
return sha.hexdigest()
def hash_string(data:str):
sha = hashlib.sha256()
sha.update(str(data).encode('utf-8'))
return sha.hexdigest()
# ---------------
import datetime
import string
import itertools
import random
def get_nonce(characters, lenght):
yield from itertools.product(*([characters] * lenght))
def count_leading_zeros(text):
n = 0
for i in range(len(text)):
if text[:i] == "0" * i:
n = i
else:
break
return n
def mine_user(data, force=4, nonce_lenght=4):
characters = '[@_!#$%^&*()<>?/\|}{~:]'+string.ascii_letters+string.digits
while True:
for x in get_nonce(characters, nonce_lenght):
nonce = ''.join(x)+random.choice(characters)
hash = hash_string(data+ nonce)
leading_zeros = count_leading_zeros(hash)
if leading_zeros >= force:
return nonce
def test():
print(datetime.datetime.now(), "EXECUTING HASH TEST - MINE USER")
public_key_str = "A4DZSk+TlR+4w39MbiIAQbti+N0H1QlJEhRH2DI6Iubj"
nonce, hash = mine_user(public_key_str)
print(nonce, hash)
# test()
# A4DZSk+TlR+4w39MbiIAQbti+N0H1QlJEhRH2DI6Iubj
# 8
# eYnU*@
# [/Q#7r