第一步,产生ECDSA私钥,如: 18E14A7B6A307F426A94F8114701E7C8E774E7F9A47E2C2035DB29A206321725 |
第二步,计算出ECDSA公钥, 0450863AD64A87AE8A2FE8….82BA6 |
第三步,对公钥进行SHA256运算 600FFE422B4E00731A59557A5CCA46CC183944191006324A447BDB2D98D4B408 |
第四步,对第三步结果进行RIPEMD-160运算 010966776006953D5567439E5E39F86A0D273BEE |
第五步,在第四步结果上加上版本号 00010966776006953D5567439E5E39F86A0D273BEE |
第六步,对第五步结果进行SHA256运算 445C7A8007A93D8733188288BB320A8FE2DEBD2AE1B47F0F50BC10BAE845C094 |
第七步,对第六步结果进行SHA256运算 D61967F63C7DD183914A4AE452C9F6AD5D462CE3D277798075B107615C1A8A30 |
第八步,提出第七步结果的前四个字节 D61967F6 |
第九步,将第八步的结果加到第五步结果最后面 00010966776006953D5567439E5E39F86A0D273BEED61967F6 |
第十步,对第九步结果进行Base58编码 16UwLL9Risc3QfPqBUvKofHmBQ7wMtjvM |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | 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(length, ‘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) ) assert check_bc(’1111111111111111111114oLvT2′) assert check_bc(“17NdbrSGoUotzeGCcMMCqnFkEvLymoou9j”) |
欢迎光临 网赚论坛 (http://www.caifuba.net/) | Powered by Discuz! X3.1 |