区块链原理(一)哈希和签名

  任意的长度的输入(pre-image, 预映射)通过哈希算法变为固定输出,这个输出值就是哈希值。

  给定一个输入 x, 那个这个 x 通过哈希算法 hash(x) 的得到 y, 那么y就是x 的哈希值。

哈希(hash)

  一般知道的哈希算法有md5, 但在btc用的哈希是 sha256 而 以太坊用的是Keccak.

推荐这些文章:

Golang数据安全与常用加解密算法-哈希算法

基本特征

输入可以是任意长度
输出是固定长度
根据输入很容易计算出输出【单向性】
根据输出很难计算出输入(几乎不可能)
两个不同的输入几乎不可能得到相同的输出【唯一性】

sha1
SHA(Secure Hash Algorithm) 安全散列算法,是一系列密码散列函数,有多个不同安全等级的版本:SHA-1,SHA-224,SHA-256,SHA-384,SHA-512
防伪装,防窜扰,保证信息的合法性和完整性
示例代码:
package main

import (
"crypto/sha1"
"encoding/hex"
"fmt"
)

func Sha1(data strin...

python学习——hashlib.md5摘要算法(哈希算法)

 
 
 
登录网站的用户名密码数据库是不会以明文密码进行存储的,简单的,可以通过摘要算法得到一个长度固定的数据块。
1、摘要算法格式:
import hashlib #导入hashlib模块
md = hashlib.md5() #获取一个md5加密算法对象md.update('how to use md5 in hashlib?'.encode('utf-8')) #制定需要加密的字符串print(md.hexdigest()) #获取加密后的16进制字符串
 
得到如下:
d26a53750bc40b38b6...

Redis原理再学习04:数据结构-哈希表hash表(dict字典)

哈希函数简介
哈希函数(hash function),又叫散列函数,哈希算法。散列函数把数据“压缩”成摘要,有的也叫”指纹“,它使数据量变小且数据格式大小也固定。
哈希函数将数据打乱混合,重新创建一个散列值。
我们经常用到的对用户登录密码加密,比如 md5 算法,其实就是一个散列函数。
value = hash_function(input_data),value 这个计算出来的值是大小固定的。
md5("hashmd5") = 46BD4AA9F79D359530D3D873BAC6F3DC,32 位的 md5 值。
当然也有 16 位的 md5 值。
经过哈希函数计算的散列值,会不会出现...

区块链入门的几个简单概念

区块链入门的几个简单概念
1. What's Block Chain ??
区块链是一门软件技术, 从本质上来看就像是一个分布式的DataBase, 是一个去中心化, 分布式技术。
由于是分布式的, 所以区块链不会仅仅存在某一个人的服务器上面, 每个人都可以搭建服务器,然后加入到区块链这个网络中来。成为区块链网络中的一个Node, 所有的Node都是对等的,不存在优先级先后。因为是去中心化,分布式的。所以每个Node都会保存完整的DataBase信息,每个人都可以向区块链网络中的任何Node进行数据的write/read, 因为区块链网络的每个Node都会同步跟新,保持区块链网络的一致性。
...

HashMap底层实现原理

HashMap 是基于哈希表的 Map 接口的非同步实现。此实现提供所有可选的映射操作,并允许使用 null 值和 null 键。此类不保证映射的顺序,特别是它不保证该顺序恒久不变。并且,HashMap不是线程安全的,如果需要实现同步,则需要使用concurrentHashMap,但后者因为实现了线程安全,在效率上相比hashmap就比较差。
JDK1.8 之前 HashMap 底层是 数组和链表 结合在一起使用也就是 链表散列。HashMap 通过 key 的 hashCode 经过扰动函数处理过后得到 hash 值,然后通过 (n - 1) & hash 判断当前元素存放的位置(...

HashMap 底层原理

1.hash 的概念:输入任意长度的输入通过hash 映射成固定长度的输出。
 哈希冲突是没办法避免的。10个抽屉放9个苹果 一定会有重复的
不能通过hash值推算出原文。
hashmap JDK1.8前数组+链表 ,1.8后数组+链表+红黑树。
Node结构:①key②value③next(链表所用)④hash(并不是keyy的值,是key & hashcode高16位^低16位得到的新值,这样能更好散列)
初始长度是16。(list初始长度是10 扩容一次+ >>1 如果是奇数就不一定是1.5倍)散列表是懒加载机制,第一次put时加载的。负载因子0.75
查...

区块链安全构建与虚拟币网站安全部署

区块链的安全构建分三个层次安全部署,首先是区块链的基础核心安全部署,分区块链数据,区块链的网络,第二层是区块链平台层的安全部署,分共识安全,激励安全,区块链合约安全。第三层就是区块链的应用层安全部署,服务器节点的安全部署,加密钱包的安全部署,币跟币之间的交易转账安全部署。

区块链在目前整个互联网中,尤其虚拟币的发展比较迅速,发展的同时安全问题也日益的突出,像BTC比特币、ETH以太坊、瑞波币、比特现金等虚拟币,在使用区块链的同时,安全需求也在不断的加大,国内虚拟币交易平台,虚拟币交易所,像火币网huobi,week,币为btcdo,okex,b...

算法 - 字符串算法 - 字符串哈希与经典例题《好文章》

nodgd 写了一篇文章,自认为这是一篇好文章。nodgd 的文章由 \(n\) 个小写英文字母组成。文章的一个子串指的是文章中的一段连续的字母,子串的长度就是这一段的字母个数。nodgd 在文章中用了排比、对偶、前后照应之类的手法,所以就有很多个子串是相同或者相近的。为了向大家证明这是一篇好文章,nodgd 决定给自己的文章进行评分。nodgd 首先确定了一个整数 \(m\),然后统计出文章中有多少个不相同的长度为 \(m\) 的子串,这个数量就是文章的评分。然而,nodgd 懒得老老实实计算这个评分了,就把任务丢给了你。

输入格式
第一行包含两个整数 \(n,m\),表示文章的长度和...

redis hash 结构实现的两种方式

redis hash结构
1.压缩列表
压缩列表是 Redis 数据类型为 list 和 hash 的底层实现之一。

当一个列表键(list)只包含少量的列表项,并且每个列表项都是小整数值,或者长度比较短的字符串,那么 Redis 就会使用压缩列表作为列表键(list)的底层实现。

当一个哈希键(hash)只包含少量键值对,并且每个键值对的键和值都是小整数值,或者长度比较短的字符串,那么 Redis 就会使用压缩列表作为哈希键(hash)的底层实现。

压缩列表结构设计
压缩列表是 Redis 为了节约内存而开发的,它是由连续内存块组成的顺序型数据结构,有点类似于数组。
连锁更新
...

HashMap是怎么解决哈希冲突的

在解决这个问题之前,我们首先需要知道什么是哈希冲突,而在了解哈希冲突之前我们还要知道什么是哈希才行;什么是哈希?

Hash,一般翻译为“散列”,也有直接音译为“哈希”的,这就是把任意长度的输入通过散列算法,变换成固定长度的输出,该输出就是散列值(哈希值);这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,所以不可能从散列值来唯一的确定输入值。简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数。所有散列函数都有如下一个基本特性:根据同一散列函数计算出的散列值如果不同,那么输入值肯定也不同。但是,根据同一散列函数计算出的散列值...

文章标题:区块链原理(一)哈希和签名
文章链接:https://www.dianjilingqu.com/51142.html
本文章来源于网络,版权归原作者所有,如果本站文章侵犯了您的权益,请联系我们删除,联系邮箱:saisai#email.cn,感谢支持理解。
THE END
< <上一篇
下一篇>>