区块链之常用数据算法介绍
在深入学习区块链时,不可避免的需要了解密码学。密码学流传已久,有几千年历史,在军事、外交、情报等领域有广泛的的应用。在区块链领域,也大量应用了密码学算法,比如哈希算法和椭圆曲线算法,这些数据加密算法是该技术重要组成部分。下面详细介绍下区块链最常用的三个数据算法。
一、哈希算法
哈希算法又叫散列算法或者摘要算法,是将任意长度的二进制值映射为较短的固定长度的二进制值,这个小的二进制值称为哈希值。它的原理其实很简单,就是把一段交易信息转换成一个固定长度的字符串,但是只要原始数据稍微改动得到的散列值机会完全不同,因为这个特性,哈希算法通常应用于对数据的完整性校验以及密码验证。故哈希算法是单向加密算法,有3个重要的性质,即抗碰撞性、原像不可逆、难题友好性。区块链中使用该算法生成区块hash、交易hash和完成工作量证明。
常见的哈希算法有:MD2、MD4、MD5、HAVAL、SHA-1、SHA256、SHA512、RipeMD、WHIRLPOOL、SHA3、HMAC
二、非对称加密算法
有非对称加密必然有对称加密算法,这里顺便简单介绍下对称加密算法。对称加密算法是指在加密和解密时使用的是同一个秘钥。与对称加密算法不同,非对称加密算法需要两个密钥:公钥(publickey)和私钥(privatekey)。公钥与私钥是一对,私钥可以推导出公钥而公钥不可以推导出私钥,如果用公钥对数据进行加密,只有用对应的私钥才能解密;如果用私钥对数据进行加密,那么只有用对应的公钥才能解密。简单的说是“公钥加密,私钥解密;私钥加密,公钥解密”。
在区块链中,数字签名就是基于上述非对称加密技术,不同点在于数字签名使用私钥生成一个签名,接收方使用公钥进行校验。比如上面用私钥解密得到明文后,用私钥进行签名进行回复,收到回复后用公钥解密得到的内容与数据相同即可证明签名正确。
在区块链技术中常见的签名算法是椭圆曲线加密技术。其算法用对椭圆曲线上的点进行加法或乘法运算来表达。区块链中私钥是一个随机数,通过椭圆曲线签名算法生成公钥。但反向从公钥计算出私钥几乎是不可能的。椭圆曲线签名算法还具有安全性高和存储空间占用小的特点。
日常业务代码使用中,对于需要数据加密情况,一般公钥加密,私钥解密。毕竟公钥可以公开,但是私钥只有你自已知道,你也同样希望只有你自已才能解密;对于需要签名的情况,则私钥加密,公钥解密。好比你的签名只有你自已签的才是真的,别人签的都是假的。
常见非对称加密算法有:RSA、ECC(椭圆曲线加密算法)、Diffie-Hellman、El Gamal、DSA(数字签名用)。
三、Base58编码算法
和通常base64编码一样,base58编码的作用也是将非可视字符可视化(ASCII化)。但不同的是base58编码去掉了几个看起来会产生歧义的字符,如 0 (零), O (大写字母O), I (大写的字母i) and l (小写的字母L) ,和几个影响双击选择的字符,如/, +。结果字符集正好58个字符(包括9个数字,24个大写字母,25个小写字母)。而且因为58 不是2的整次幂,所以没有使用类似base64编码中使用直接截取3个字符转4个字符(38=46 , 2的6次方刚好64)的方法进行转换,而是采用我们数学上经常使用的进制转换方法——辗转相除法(本质上,base64编码是64进制,base58是58进制)。
Base58是很多公链地址使用的编码方式,如比特币,主要用于产生钱包地址,这种编码格式不仅实现了数据压缩,保持了易读性,还具有错误诊断功能。
区块链之常用数据算法介绍相关推荐
- 第十一课 区块链常用共识算法介绍
上一节课我们学习了共识算法理论基础,今天我们继续深入学习区块链共识算法,通过这节课我们将了解工作量证明.权威证明.权威授权证明.实用拜占庭容错等相关内容. 在学习课程的时候,你也可以领取BaaS平台为 ...
- 道路匹配MapMatching:GPS轨迹点常用聚类算法介绍(K-Means聚类、蚁群算法等)
道路匹配MapMatching:GPS轨迹点常用聚类算法介绍(K-Means聚类.蚁群算法等) 前言 一.聚类算法是什么? 二.道路匹配中常见聚类算法介绍 1.K-Means算法 2.基于时间和距离的 ...
- 区块链之跨链技术介绍
大家了解过区块链的都清楚,目前存在很多条链,区块链之间互操作性极大程度的限制了区块链的应用空间.不论是公有链还是联盟链,跨链技术就是实现价值互联网的关键,是区块链向外拓展和连接的桥梁.目前主流的跨链技 ...
- 区块链之加解密算法数字证书
目录 一.加解密算法 数字签名 对称加密 DES(Data EncryptionStandard) 3DES(Triple DES) AES(Advanced EncryptionStandard) ...
- 常用数据存储格式之xml
常用数据存储格式介绍 XML 被设计用来传输和存储数据,其焦点是数据的内容. HTML 被设计用来显示数据,其焦点是数据的外观. 语法规则: XML 文档必须有一个根元素 XML元素都必须有一个关闭标 ...
- 六种常用的文本聚类算法介绍
文本聚类算法介绍 分类和聚类都是文本挖掘中常使用的方法,他们的目的都是将相似度高的对象归类,不同点在于分类是采用监督学习,分类算法按照已经定义好的类别来识别一篇文本,而聚类是将若干文本进行相似度比较, ...
- 【大数据】常用大数据工具介绍
整理了工作中常用到的大数据工具的简单介绍. [zookeeper]-- 分布式应用程序协调服务 ZooKeeper是一个分布式应用程序协调服务,是Hadoop和Hbase的重要组件.它为分布式应用提供 ...
- 陋室快报 | 算法工程师的常用数据工具-20211127
陋室快报 陋室快报是对陋室推荐栏目更新优化后的版本,更快更准的给大家推荐优质信息,频率预计是一周一次.敬请关注.栏目介绍:陋室快报栏目介绍. 近期,我再次总结了我的历史文章,累积起来有50w字,百余篇 ...
- 数学建模竞赛常用算法介绍及对应国赛获奖论文分类整理分享
数学建模竞赛中应当掌握的算法: 数学建模国赛每年的题型都类似,除非是个人专业性很强,否则作者不太建议选择华为出的题,剩余的题型每年都类似,是有迹可循的,毕竟站在巨人的肩膀上看的更远.下面就介绍一些数模 ...
最新文章
- [Abp 源码分析]异常处理
- 第一章:最小可行区块链
- 华为鸿蒙宣传悟空视频_华为自研鸿蒙系统定档9月?《悟空》微电影透露玄机...
- VB另类技巧(可以用于VBA)-指针的使用
- python axis 1_Python之NumPy(axis=0 与axis=1)区分
- 【渝粤题库】广东开放大学 文化产业概论 形成性考核 (2)
- Java SE作业:判断一个字符串是否是视频文件
- ACM河南第八届省赛题
- 软硬方式链接(快捷方式)
- msxml3.dll 执行页内操作时的错误
- 支付宝sdk集成,报系统繁忙 请稍后再试(ALI64)
- 从零实践强化学习之连续动作空间上求解RL(PARL)
- Chrome (Google) 浏览器的快捷键大全
- Spring AOP切入点表达式
- ampserv mysql升级_APMServ5.2.6升级PHP
- UEFI开发与调试---edk2中的Package
- java fuoco车架_破风硬汉——JAVA FUOCO公路车 评测
- Leetcode_205_Isomorphic Strings
- 人工神经网络的算法原理,对人工神经网络的理解
- Python爬虫实战(1)——百度贴吧抓取帖子并保存内容和图片
热门文章
- java前端传到数据库显示问号?
- 火山PC餐饮界面UI开发教程
- 商业模式画布的九大模块
- 看完押井守的电影,你就已经是凯撒了,你该知道如何避开凯撒的悲剧,却也可以去享受凯撒的光辉文明
- c语言贪吃蛇添加排行榜,c语言贪吃蛇排行榜_...12年4月编程语言排行榜 C语言荣归宝座...
- 学习Java的第一天
- Vue babel-polyfill 解决IE兼容问题
- 【小5聊】通过注册表修改IE浏览器的主页,被某软件控制主页后如何愉快的修改的探索
- yolov3实现Kitti baseline(含评估代码:easy、moderate和hard的AP计算,fps计算)(下)
- 学习一项技能要花多少时间?