hash的安全性
在区块链中,我们面临着两个问题:
- 隐私问题
- 快速对账问题
由于区块链中,每个人都存在着一个账本,当一个人有收入的时候,将会进行广播到所有人的账本,例如张三收入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的安全性的更多相关文章
- 如何生成安全的密码 Hash:MD5, SHA, PBKDF2, BCrypt 示例
密码 Hash 值的产生是将用户所提供的密码通过使用一定的算法计算后得到的加密字符序列.在 Java 中提供很多被证明能有效保证密码安全的 Hash 算法实现,我将在这篇文章中讨论其中的部分算法. 需 ...
- Java源码安全审查
最近业务需要出一份Java Web应用源码安全审查报告, 对比了市面上数种工具及其分析结果, 基于结果总结了一份规则库. 本文目录结构如下: 检测工具 FindSecurityBugs 基于class ...
- SMB relay
SMB relay 0x00 SMB服务 先来了解一下什么是 SMB 服务,SMB(Server Message Block)是一个协议名称,用它可以共享计算机之间的文件.打印机.串口等,通过 SMB ...
- Hash函数的安全性
我们为了保证消息的完整性,引进了散列函数,那么散列函数会对安全正造成什么影响呢?这是需要好好研究一番的问题. 三个概念: 1.如果y<>x,且h(x)=h(y),则称为碰撞. 2.对于给定 ...
- 对抗密码破解 —— Web 前端慢 Hash
(更新:https://www.cnblogs.com/index-html/p/frontend_kdf.html ) 0x00 前言 天下武功,唯快不破.但在密码学中则不同.算法越快,越容易破. ...
- WebApi安全性 使用TOKEN+签名验证
首先问大家一个问题,你在写开放的API接口时是如何保证数据的安全性的?先来看看有哪些安全性问题在开放的api接口中,我们通过http Post或者Get方式请求服务器的时候,会面临着许多的安全性问题, ...
- Hash 函数及其重要性
不时会爆出网站的服务器和数据库被盗取,考虑到这点,就要确保用户一些敏感数据(例如密码)的安全性.今天,我们要学的是 hash 背后的基础知识,以及如何用它来保护你的 web 应用的密码. 申明 密码学 ...
- Hash校验
在项目的建设方案中,都会提到数据的安全性,数据的安全性其中又包括数据的完整性和数据保密性, 1. 数据完整性 通过使用Hash校验的方法确保数据的完整性: 传输过程的完整性受到损坏则采取数 ...
- Hash函数及其应用
本文部分内容摘自网络,参考资料链接会在文后给出,在此感谢原作者的分享. 计算理论中,没有Hash函数的说法,只有单向函数的说法.所谓的单向函数,是一个复杂的定义,大家可以去看计算理论或者密码学方面的数 ...
随机推荐
- python+selenium—webdriver入门(一)
一.浏览器最大化 二.设置浏览器分辨率大小 三.打印页面title 四.打印URL 五.控制浏览器前进或后退 #!/usr/bin/env python#-*- coding:utf-8 -*- fr ...
- Java语法基础动手动脑
仔细阅读示例:EnumTest.Java,运行它,分析运行结果? 你能得到什么结论?你掌握了枚举类型的基本用法了吗? EnumTest.java public class EnumTest { pub ...
- mysql练习题3
USE day44; -- 1 查出所有员工的名字,薪资,格式为 -- <名字:egon> <薪资:3000> SELECT '姓名:',name,'薪资:',salary f ...
- 纯css实现蒙层loading效果
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- SQL2008 2机镜像
清除设置 //删除端点 declare @sql varchar() declare @mirrName varchar() select @mirrName=name from sys.databa ...
- linux利用命令将一个盘上的所有复制到另一个盘上
1.fdisk -l 查看硬盘状况 2.将目标盘利用mount挂载 3.查看硬盘使用状况,看目标盘是否有足够的空间:df -h 4.如果足够,利用dd命令将源盘数据拷贝到目标盘:dd if=/dev/ ...
- C++IO cin
cin cin.get() 每次只读缓冲区一个字符,不能接收空格 cin.getline() 读缓冲区一行,能够接收空格 cin.ignore(2) 忽略缓冲器2个字节 int i = cin.pee ...
- IntelliJ IDEA 2017版 spring-boot2.0.4的集成JSP
一.必须依赖四个包,其中三个是springboot自带包,可以不写版本号,有一个不在springboot中,需要设置版本号 <!--引入Spring Boot内嵌的Tomcat对Jsp的解析包- ...
- 第二章(java程序设计)第三章(语言基础)
第二章 2.1 对象 对象的概念是由现实世界引入问题模型: 对象包含有:状态和行为.具体地来说是: 数据封装:对象的方法的作用就是:将内部变量封装起来,提供给外界交互的窗口.(实现对数据的隐藏) 继承 ...
- 【慕课网实战】Spark Streaming实时流处理项目实战笔记四之铭文升级版
铭文一级: 需求二:Agent选型:exec source + memory channel + logger sink# Name the components on this agenta1.so ...