zoukankan      html  css  js  c++  java
  • p1.BTC-密码学的原理

    所谓加密货币是不加密的,区块链上所有的交易内容(包括:账户的地址,转账的地址)都是公开的。

    Bitcoin中主要用到密码学的中的两个功能:Hash和签名。

    一 Hash

    Cryptographic hash function:

    1.Collision resistance

      Hash碰撞其实很常见,因为输出空间是邮有限的,比如256位的Hash值,输出空间就2的256次方,但是输入空间是无限的。但是Collision  resistance是指目前没有有效的方法可以通过hash值反推输入值,只能通过Brutal Force破解。如果输入空间比较大,在实际破解中,就几乎不可行了。即,具有防篡改性。

    ps:MD5算法已经不具备该特性了。(已经掌握了如何人为的制造Hash碰撞了)

    2.Hiding

    指的是Hash的计算过程是单项的,不可逆。但是依然可以考虑使用暴力破解。

    ps:实际工作中,为了防止暴力破解,会采用拼接随机数nonce后(增大输入空间),计算Hash值。

     3.puzzle friendly

    指的是Hash值事前是不可预测的,如果想hash落在某个范围内,只能一个个的去试。

    Bitcoin中使用的hash函数是SHA-256 (secure hash Algorithm)

    二 签名

       需要先知道Bitcoin中的账户管理机制,去中心化,想开户就是在本地创建一对(公钥,私钥),就代表一个账户。如果需要给某个账户转10个Bitcoin,需要用自己私钥签名,对方用我的公钥解密就可以验证了。

  • 相关阅读:
    常用的电脑快捷键【转】
    win10关闭自动更新【转】
    JavaScript中双叹号(!!)作用【转】
    javascript中获取dom元素的高度和宽度【转】
    javascript的setTimeout()用法总结,js的setTimeout()方法【转】
    JavaScript sort() 方法使用【转】
    JavaScript slice() 方法使用【转】
    Ball CodeForces
    C. Trailing Loves (or L'oeufs?)
    C
  • 原文地址:https://www.cnblogs.com/carlous/p/11033171.html
Copyright © 2011-2022 走看看