hash.py (1318B)
1 #!/usr/bin/env python3 2 # electrum-obelisk 3 # Copyright (C) 2020-2021 Ivan J. <parazyd@dyne.org> 4 # Copyright (C) 2016-2018 Neil Booth (MIT License) 5 # 6 # This program is free software: you can redistribute it and/or modify 7 # it under the terms of the GNU Affero General Public License as published by 8 # the Free Software Foundation, either version 3 of the License, or 9 # (at your option) any later version. 10 # 11 # This program is distributed in the hope that it will be useful, 12 # but WITHOUT ANY WARRANTY; without even the implied warranty of 13 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 # GNU Affero General Public License for more details. 15 # 16 # You should have received a copy of the GNU Affero General Public License 17 # along with this program. If not, see <http://www.gnu.org/licenses/>. 18 """ Cryptographic hash functions and helpers """ 19 import hashlib 20 21 22 _sha256 = hashlib.sha256 23 24 25 def sha256(inp): 26 """ Simple wrapper of hashlib sha256. """ 27 return _sha256(inp).digest() 28 29 30 def double_sha256(inp): 31 """ sha256 of sha256, as used extensively in bitcoin """ 32 return sha256(sha256(inp)) 33 34 35 def hash_to_hex_str(inp): 36 """ Convert a big-endian binary hash to displayed hex string. 37 Display form of a binary hash is reversed and converted to hex. 38 """ 39 return bytes(reversed(inp)).hex()