在深入学习区块链时,不可避免的需要了解密码学。密码学流传已久,有几千年历史,在军事、外交、情报等领域有广泛的的应用。在区块链领域,也大量应用了密码学算法,比如哈希算法和椭圆曲线算法,这些数据加密算法是该技术重要组成部分。下面详细介绍下区块链最常用的三个数据算法。
一、哈希算法
哈希算法又叫散列算法或者摘要算法,是将任意长度的二进制值映射为较短的固定长度的二进制值,这个小的二进制值称为哈希值。它的原理其实很简单,就是把一段交易信息转换成一个固定长度的字符串,但是只要原始数据稍微改动得到的散列值机会完全不同,因为这个特性,哈希算法通常应用于对数据的完整性校验以及密码验证。故哈希算法是单向加密算法,有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是很多公链地址使用的编码方式,如比特币,主要用于产生钱包地址,这种编码格式不仅实现了数据压缩,保持了易读性,还具有错误诊断功能。

区块链之常用数据算法介绍相关推荐

  1. 第十一课 区块链常用共识算法介绍

    上一节课我们学习了共识算法理论基础,今天我们继续深入学习区块链共识算法,通过这节课我们将了解工作量证明.权威证明.权威授权证明.实用拜占庭容错等相关内容. 在学习课程的时候,你也可以领取BaaS平台为 ...

  2. 道路匹配MapMatching:GPS轨迹点常用聚类算法介绍(K-Means聚类、蚁群算法等)

    道路匹配MapMatching:GPS轨迹点常用聚类算法介绍(K-Means聚类.蚁群算法等) 前言 一.聚类算法是什么? 二.道路匹配中常见聚类算法介绍 1.K-Means算法 2.基于时间和距离的 ...

  3. 区块链之跨链技术介绍

    大家了解过区块链的都清楚,目前存在很多条链,区块链之间互操作性极大程度的限制了区块链的应用空间.不论是公有链还是联盟链,跨链技术就是实现价值互联网的关键,是区块链向外拓展和连接的桥梁.目前主流的跨链技 ...

  4. 区块链之加解密算法数字证书

    目录 一.加解密算法 数字签名 对称加密 DES(Data EncryptionStandard) 3DES(Triple DES) AES(Advanced EncryptionStandard) ...

  5. 常用数据存储格式之xml

    常用数据存储格式介绍 XML 被设计用来传输和存储数据,其焦点是数据的内容. HTML 被设计用来显示数据,其焦点是数据的外观. 语法规则: XML 文档必须有一个根元素 XML元素都必须有一个关闭标 ...

  6. 六种常用的文本聚类算法介绍

    文本聚类算法介绍 分类和聚类都是文本挖掘中常使用的方法,他们的目的都是将相似度高的对象归类,不同点在于分类是采用监督学习,分类算法按照已经定义好的类别来识别一篇文本,而聚类是将若干文本进行相似度比较, ...

  7. 【大数据】常用大数据工具介绍

    整理了工作中常用到的大数据工具的简单介绍. [zookeeper]-- 分布式应用程序协调服务 ZooKeeper是一个分布式应用程序协调服务,是Hadoop和Hbase的重要组件.它为分布式应用提供 ...

  8. 陋室快报 | 算法工程师的常用数据工具-20211127

    陋室快报 陋室快报是对陋室推荐栏目更新优化后的版本,更快更准的给大家推荐优质信息,频率预计是一周一次.敬请关注.栏目介绍:陋室快报栏目介绍. 近期,我再次总结了我的历史文章,累积起来有50w字,百余篇 ...

  9. 数学建模竞赛常用算法介绍及对应国赛获奖论文分类整理分享

    数学建模竞赛中应当掌握的算法: 数学建模国赛每年的题型都类似,除非是个人专业性很强,否则作者不太建议选择华为出的题,剩余的题型每年都类似,是有迹可循的,毕竟站在巨人的肩膀上看的更远.下面就介绍一些数模 ...

最新文章

  1. [Abp 源码分析]异常处理
  2. 第一章:最小可行区块链
  3. 华为鸿蒙宣传悟空视频_华为自研鸿蒙系统定档9月?《悟空》微电影透露玄机...
  4. VB另类技巧(可以用于VBA)-指针的使用
  5. python axis 1_Python之NumPy(axis=0 与axis=1)区分
  6. 【渝粤题库】广东开放大学 文化产业概论 形成性考核 (2)
  7. Java SE作业:判断一个字符串是否是视频文件
  8. ACM河南第八届省赛题
  9. 软硬方式链接(快捷方式)
  10. msxml3.dll 执行页内操作时的错误
  11. 支付宝sdk集成,报系统繁忙 请稍后再试(ALI64)
  12. 从零实践强化学习之连续动作空间上求解RL(PARL)
  13. Chrome (Google) 浏览器的快捷键大全
  14. Spring AOP切入点表达式
  15. ampserv mysql升级_APMServ5.2.6升级PHP
  16. UEFI开发与调试---edk2中的Package
  17. java fuoco车架_破风硬汉——JAVA FUOCO公路车 评测
  18. Leetcode_205_Isomorphic Strings
  19. 人工神经网络的算法原理,对人工神经网络的理解
  20. Python爬虫实战(1)——百度贴吧抓取帖子并保存内容和图片

热门文章

  1. java前端传到数据库显示问号?
  2. 火山PC餐饮界面UI开发教程
  3. 商业模式画布的九大模块
  4. 看完押井守的电影,你就已经是凯撒了,你该知道如何避开凯撒的悲剧,却也可以去享受凯撒的光辉文明
  5. c语言贪吃蛇添加排行榜,c语言贪吃蛇排行榜_...12年4月编程语言排行榜 C语言荣归宝座...
  6. 学习Java的第一天
  7. Vue babel-polyfill 解决IE兼容问题
  8. 【小5聊】通过注册表修改IE浏览器的主页,被某软件控制主页后如何愉快的修改的探索
  9. yolov3实现Kitti baseline(含评估代码:easy、moderate和hard的AP计算,fps计算)(下)
  10. 学习一项技能要花多少时间?