哈希函数(Hash Function),也称为哈希函数,给定输入x,它将计算对应的输出H(x)。哈希函数的主要特征是:1.输入x可以是任意长度的字符串2.输出结果是H(x)的长度是固定的3.计算H(x)的过程很有效(对于长度n,计算H(x)的时间复杂度应为O(n)。椭圆曲线加密算法在密码学中的使用是由Neal Koblitz和Victor Miller在1985年独立提出的。它的主要优点是,在某些情况下,它使用比其他算法(例如RSA)更小的密钥,但提供了可比或更高级别的安全性。比特币使用基于secp256k1椭圆曲线数学的公共密钥密码算法。它包含一个私钥和一个公钥。私钥用于对交易进行签名,并将签名和原始数据发送到整个比特币网络。公钥用于验证整个网络中节点的事务处理的有效性。签名算法可确保交易是由拥有相应私钥的人发出的。 BASE58编码Base58是比特币中使用的一种独特的编码方法。它主要用于生成比特币钱包地址。与Base64相比,Base58不使用数字“ 0”,大写字母“ O”,大写字母“ I”,小写字母“ L”和“ +”。和“ /”符号字母表使用币1个比特:123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz2.Monero字母用于:123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz3.Ripple字母表使用:rpshnaf39wBUDNEGHJKLM4PQRST7VWXYZ2bcdeCg65jkm8oFqi1tuvAxyz私钥实际上256bit的长度的二进制数的,256位= 1.15E + 77在宇宙中的所有原子的总数为约10至第80个力量。如果我们随机生成2256 + 1次私钥,则不可避免地会生成之前出现过的私钥。即使从概率的角度来看,如果我们执行2130代私钥,那么仍有99%的机会获得现有的私钥。但是这种情况目前极难发生。公钥使用椭圆曲线加密算法(ECDSA-secp256k1)计算与私钥对应的未压缩公钥。这个过程是不可逆的。公钥的长度为65个字节:标头ID:1个字节(0x04)X整数:32个字节(BE)Y整数:32个字节(BE)地址公钥经过散列和处理多次,以生成btc地址。根据未压缩的公钥生成地址的过程:1.对完整的公钥(标头ID + X整数+ Y整数)执行sha256()操作,然后对结果执行成熟的md160()操作。结果a的长度为20字节。2.在步骤1中获得的结果之前添加网络ID。字节:主网络:0x00测试网络:0x6fNamecoin网络:0x34获得的b的长度为21字节3.执行两个连续的sha256()操作根据步骤2中获得的结果,然后仅将运算结果的前4个字节作为校验和4。将步骤3中获得的校验和与步骤2中b的末尾相加,得到c,其长度为25个字节。 5.对步骤4中生成的c执行Base58编码,以获取地址步骤图:生成密钥的地址时,仅在步骤1中采用标识标头+公钥的X整数部分。比特币转账中的公钥和地址启动比特币转账时,私钥被视为帐户的密码。填写帐单后,需要使用私钥对帐单的内容进行签名以获得签名信息SIG,然后将SIG附加到帐单上:SIG = H(详细信息,PRIVATE_KEY)知道SIG和帐单内容,则无法撤消私钥。然后,在其他人获得帐单信息和SIG之后,他们如何验证SIG确实是由与发件人地址相对应的私钥签名的?这是公用密钥的功能,公用密钥应附加在帐单上。当其他人收到帐单时,他们可以验证SIG是否合法。 true = VALIDATE(详细信息,SIG,PUBLIC_KEY)私钥-“公钥-”地址是单向的。在不可逆过程中,签名交易信息时仅公开公钥,并且私钥是安全的: