Module src.utils.reconstructhash
Onionr - Private P2P Communication
z-fill (zero fill) a string to a specific length intended for reconstructing block hashes
Expand source code
'''
    Onionr - Private P2P Communication
    z-fill (zero fill) a string to a specific length
    intended for reconstructing block hashes
'''
from typing import Union
'''
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.
    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <https://www.gnu.org/licenses/>.
'''
def reconstruct_hash(hex_hash: Union[str, bytes],
                     length: int = 64) -> Union[str, bytes]:
    """Pad hash hex string with zeros, return result"""
    return hex_hash.zfill(length)
def deconstruct_hash(hex_hash: Union[str, bytes]) -> Union[str, bytes]:
    """Remove leading zeros from hex hash, return result"""
    new_hash = ''
    ret_bytes = False
    try:
        hex_hash = hex_hash.decode()
        ret_bytes = True
    except AttributeError:
        pass
    c = 0
    for x in hex_hash:
        if x == '0':
            c += 1
        else:
            break
    new_hash = hex_hash[c:]
    if ret_bytes:
        new_hash = new_hash.encode()
    return new_hash
Functions
def deconstruct_hash(hex_hash)- 
Remove leading zeros from hex hash, return result
Expand source code
def deconstruct_hash(hex_hash: Union[str, bytes]) -> Union[str, bytes]: """Remove leading zeros from hex hash, return result""" new_hash = '' ret_bytes = False try: hex_hash = hex_hash.decode() ret_bytes = True except AttributeError: pass c = 0 for x in hex_hash: if x == '0': c += 1 else: break new_hash = hex_hash[c:] if ret_bytes: new_hash = new_hash.encode() return new_hash def reconstruct_hash(hex_hash, length=64)- 
Pad hash hex string with zeros, return result
Expand source code
def reconstruct_hash(hex_hash: Union[str, bytes], length: int = 64) -> Union[str, bytes]: """Pad hash hex string with zeros, return result""" return hex_hash.zfill(length)