在区块链中,我们面临着两个问题:

  • 隐私问题
  • 快速对账问题

由于区块链中,每个人都存在着一个账本,当一个人有收入的时候,将会进行广播到所有人的账本,例如张三收入xxx钱,这样子所有的账本才能同步更新。但这种情况面临的问题是,我们并不想让别人知道我们收入了多少,这就是隐私问题。

既然有广播,每个人的账本都能收到广播消息,当账本越来越多,消息越来越多,账本如何快速更新对账,同样是一个问题。

哈希函数hash

  • 世界上没有两片完全相同的叶子
  • 每一个事物都有自己的特征

Hash函数可以提取数据的特征

md5是以前很多网站常用的加密方式,md5得到的位数是32位,但用它并不安全,彩虹表可以反向映射破解。

于是人们用sha-1【安全哈希算法】,后来,谷歌公司发布了hash碰撞可能破解此算法 - 《Google研究人员宣布完成全球首例SHA-1哈希碰撞!》 ,于是此类sha-1算法也不可靠。

区块链使用的全网唯一标识算法是 sha256 hash

它的二进制位:

sha256

由于不可逆性,于是破解只能使用穷举法,它被破解的可能性为:

  • 2的256次方
  • 即 : 1.157920892373162e+77

网上的说法是,如果要破解,银河系所有的服务器(假如计算力等于普通的一台电脑)加起来一起计算,也需要上百年才能有破解的可能性。

比特币要点:

  • 比特币通过p2p技术实现账本的同步拷贝
  • 比特币通过增加发送信息的成本(pow)来增加信息传播的成本,降低信息传播的速率
  • 比特币通过区块链的长度,来判断数据的可信度
  • 交易中6个有效区块认为转账成功. 所以比特币的交易确认需要1小时
  • Pow通过sha256哈希来完成, 后面单独介绍
  • 工作证明的获取需要很长时间, 但是验证只需要很短时间.
  • 比特币的Pow算法导致大家通过矿池来挖矿, 矿池算力垄断. 有潜在的中心化风险.
  • 矿池挖矿只是在抢夺记账权,获得比特币,消耗大量电力,并无实际价值,我国计划取缔挖矿.

比特币的价值

  • 区块链可以让物质的转移像信息流动一样快速便捷,同时又由全网的人一起来担保(全部参与的人一起担保就相当于天然存在存在不可证伪,除非其中51%的人统一口径违约),来保证在虚拟世界中的物质转移的可靠。
  • 价值转移

hash的安全性的更多相关文章

  1. 如何生成安全的密码 Hash:MD5, SHA, PBKDF2, BCrypt 示例

    密码 Hash 值的产生是将用户所提供的密码通过使用一定的算法计算后得到的加密字符序列.在 Java 中提供很多被证明能有效保证密码安全的 Hash 算法实现,我将在这篇文章中讨论其中的部分算法. 需 ...

  2. Java源码安全审查

    最近业务需要出一份Java Web应用源码安全审查报告, 对比了市面上数种工具及其分析结果, 基于结果总结了一份规则库. 本文目录结构如下: 检测工具 FindSecurityBugs 基于class ...

  3. SMB relay

    SMB relay 0x00 SMB服务 先来了解一下什么是 SMB 服务,SMB(Server Message Block)是一个协议名称,用它可以共享计算机之间的文件.打印机.串口等,通过 SMB ...

  4. Hash函数的安全性

    我们为了保证消息的完整性,引进了散列函数,那么散列函数会对安全正造成什么影响呢?这是需要好好研究一番的问题. 三个概念: 1.如果y<>x,且h(x)=h(y),则称为碰撞. 2.对于给定 ...

  5. 对抗密码破解 —— Web 前端慢 Hash

    (更新:https://www.cnblogs.com/index-html/p/frontend_kdf.html ) 0x00 前言 天下武功,唯快不破.但在密码学中则不同.算法越快,越容易破. ...

  6. WebApi安全性 使用TOKEN+签名验证

    首先问大家一个问题,你在写开放的API接口时是如何保证数据的安全性的?先来看看有哪些安全性问题在开放的api接口中,我们通过http Post或者Get方式请求服务器的时候,会面临着许多的安全性问题, ...

  7. Hash 函数及其重要性

    不时会爆出网站的服务器和数据库被盗取,考虑到这点,就要确保用户一些敏感数据(例如密码)的安全性.今天,我们要学的是 hash 背后的基础知识,以及如何用它来保护你的 web 应用的密码. 申明 密码学 ...

  8. Hash校验

    在项目的建设方案中,都会提到数据的安全性,数据的安全性其中又包括数据的完整性和数据保密性,      1.  数据完整性 通过使用Hash校验的方法确保数据的完整性: 传输过程的完整性受到损坏则采取数 ...

  9. Hash函数及其应用

    本文部分内容摘自网络,参考资料链接会在文后给出,在此感谢原作者的分享. 计算理论中,没有Hash函数的说法,只有单向函数的说法.所谓的单向函数,是一个复杂的定义,大家可以去看计算理论或者密码学方面的数 ...

随机推荐

  1. Spring Boot学习笔记:项目开发中规范总结

    Spring Boot在企业开发中使用的很广泛,不同的企业有不同的开发规范和标准.但是有些标准都是一致的. 项目包结构 以下是一个项目常见的包结构 以上是一个项目的基本目录结构,不同的项目结构会有差异 ...

  2. c++中的log函数

    引入#include<cmath> 以e为底:log(exp(n)) 以10为底:log10(n) 以m为底:log(n)/log(m)

  3. transform.forward和vector3.forward

    Vector3.forward的值永远是(0,0,1)(这里的(0,0,1)是世界坐标的(0,0,1)),而transform.forward我们可以理解为其对应物体的z轴方向,是一个向量,而不是一个 ...

  4. Servet-------JSTL标签库

    JSTL标签库 也可以和EL表达式配合使用 作用:   提高在Jsp中的逻辑代码的编写效率,使用标签..(对EL表达式的扩展)   使用: JSTL的核心标签库(重点) JSTL的SQL标签库 JST ...

  5. Jetty配置

    类似TomCat 登陆官网www.eclipse.org Download下载Jetty zip压缩版 解压到文件夹,打开idea的Config->Jetty-server->Local- ...

  6. The XOR Largest Pair(Tire字典树应用)

    题目链接:传送门 思路:建立一个32位的字典树,对每一个要插入的数字查找它异或的最大值(就是尽量全部二进制的值都相反), 然后获得两个数异或的最大值. #include<iostream> ...

  7. hdu-2795(线段树的简单应用)

    题目链接:传送门 参考文章:https://blog.csdn.net/qiqi_skystar/article/details/50299743 题意:给出一个高h,宽w的方形画板,有高位1宽为wi ...

  8. SPRING 集成 activemq 的 topic 模式

    概要 activemq 支持两种模式: 1.队列模式 2. 发布订阅者模式,topic有一个主题可以有多个订阅者.这种情况可以将一个消息,分发到多个消费者. 比如我有这样一个案例,用户需要同步,而且需 ...

  9. 使用express框架和mongoose在MongoDB删除数据

    使用remove()删除数据 remove({},function(err,doc){})  // 删除所有数据 remove({age:18},function(err,doc){}); //删除指 ...

  10. Spring Boot项目简单上手+swagger配置+项目发布(可能是史上最详细的)

    Spring Boot项目简单上手+swagger配置 1.项目实践 项目结构图 项目整体分为四部分:1.source code 2.sql-mapper 3.application.properti ...