Bitcoin/address validation: Difference between revisions
Content added Content deleted
(→{{header|Perl}}: Add Python.) |
|||
Line 117: | Line 117: | ||
substr sha256(sha256 pack 'C*', @byte[0..20]), 0, 4; |
substr sha256(sha256 pack 'C*', @byte[0..20]), 0, 4; |
||
}</lang> |
}</lang> |
||
=={{header|Python}}== |
|||
<lang python>from hashlib import sha256 |
|||
digits58 = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz' |
|||
def decode_base58(bc, length): |
|||
n = 0 |
|||
for char in bc: |
|||
n = n * 58 + digits58.index(char) |
|||
return n.to_bytes(25, 'big') |
|||
def check_bc(bc): |
|||
bcbytes = decode_base58(bc, 25) |
|||
return bcbytes[-4:] == sha256(sha256(bcbytes[:-4]).digest()).digest()[:4] |
|||
if __name__ == '__main__': |
|||
bc = '1AGNa15ZQXAZUgFiqJ2i7Z2DPU2J6hW62i' |
|||
assert check_bc(bc) |
|||
assert not check_bc( bc.replace('N', 'P', 1) )</lang> |
|||
{{out}} |
|||
No output signifying success. |
|||
=={{header|Tcl}}== |
=={{header|Tcl}}== |