区块链之常用数据算法介绍

2023-11-11

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

区块链之常用数据算法介绍 的相关文章

随机推荐

  • UNIX网络编程卷一 学习笔记 第一章 简介

    编写通过计算机网络通信的程序时 首先要发明一种协议 即这些程序怎样进行通信 在深入设计一个协议的细节前 要在更高层次决定通信由哪个程序发起以及响应在何时产生 举例来说 一般认为web服务器是一个长时间运行的程序 即所谓守护程序 它只在响应来
  • Windows 365 以明文形式暴露微软 Azure 凭据

    聚焦源代码安全 网罗国内外最新资讯 编译 代码卫士 安全研究员 Benjamin Delpy 找到了使用 MImikatz 从微软的 Windows 365 Cloud PC 新服务中转储用户未加密明文微软 Azure 凭据的方法 Mimi
  • sql server 查看所有用户表名

    以前光使用sql server的增删改查 未深入涉及 今天了解了sysobjects 还有很多深入的内容 可以查看下sysobjects方面的知识 select name from sysobjects where xtype u and
  • 磁盘管理相关命令

    1 使用gdisk进行分区 两个主分区 一个扩展分区 三个逻辑分区 大小分别为100M 200M 500M gdisk命令 创建和维护磁盘分区 1 分区前 新建一块新的硬盘 sdb 用于分区 2 使用gdisk命令进行分区 输入命令n添加新
  • 谷歌小恐龙PHP代码,c++实现Chrome小恐龙游戏(网上找到的)

    include include include include include define N 80 define up 72 define left 75 define right 77 define down 80 voidrun v
  • 27个常用stata命令(2)

    常用的27个Stata命令 1 直接导入csv格式数据 insheet using name csv clear 2 修改变量长度 format var 20 2g 3 删除重复值 sort var1 var2 duplicatesdrop
  • PTA Basic level 1025 反转链表 (25分)

    1025 反转链表 25分 给定一个常数 K 以及一个单链表 L 请编写程序将 L 中每 K 个结点反转 例如 给定 L 为 1 2 3 4 5 6 K 为 3 则输出应该为 3 2 1 6 5 4 如果 K 为 4 则输出应该为 4 3
  • 在node中使用模板引擎---art-template

    art template是一个简约 超快的模板引擎 它不仅可以使用在浏览器中 也可以使用在node中 模板引擎最早是使用于服务器端 后来才发展到了前端 首先是它的安装 我们可以在官方文档中看到 它的安装只需要一行命令 为了方便 下面是官网文
  • cvc-complex-type.2.4.a: Invalid content was found starting with element 'threadsafe'

    如果你使用的是maven 而且我认为你应该使用这个依赖
  • Jenkins集成SonarQube之Not authorized. Please check the properties sonar.login and sonar.password.

    添加SonarQube登录用户名密码 sonar login admin sonar password admin Jenkins集成sonar时遇到的一些问题及解决方法 sonar scanner连接sonarquebe7的sonar j
  • 【通览一百个大模型】近100个大模型总览

    通览一百个大模型 近100个大模型总览 作者 王嘉宁 本文章内容为原创 仓库链接 https github com wjn1996 LLMs NLP Algo 订阅专栏 大模型 NLP 算法 可获得博主多年积累的全部NLP 大模型和算法干货
  • 自学软件测试怎么学?新增软件测试(全栈),笔试及面试全套方法

    既然是自学 那就如下方面着手吧 1 面试 此篇文章的重磅 2 思路 3 心态 4 技能 真所谓 面试造飞机 工作拧螺丝 咱们先从第一个 面试着手 这就好比写文章先列好提纲一样 要知道你这个行业具体有那些需要学习的知识 确保咱们方向的正确性
  • Spring IOC/DI(一.入门案例)

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 目录 一 Spring相关概念 二 IOC DI概念及入门案例 1 IOC Inversion of Control 控制反转 2 DI Dependency Injecti
  • 宽带连接720错误代码解决办法

    宽带连接720错误代码解决办法 本人win10系统 连接宽带时出现720报错 整合解决方法如下 1 卸载IP Windows Q键搜索设备管理器 回车打开 打开网络适配器的列表找到 WAN Miniport IP 右键选择卸载设备 2 重启
  • 生成安卓唯一设备标识

    参考链接 https github com Paldom UniqueDeviceID https github com quert999 DeviceObserver 获取移动设备唯一标示 反作弊 https www jianshu co
  • Linux操作系统——Ubuntu

    Ubuntu打开命令行窗口的方式 1 快捷键 ctrl alt t 2 在左上角搜索 terminal 命令 时间 date 显示当前时间 cal 查看本月日历 cal 11 2019 查看2019年11月的日历 cal y 2019 查看
  • Vue3的新特性

    文章目录 1 生命周期的变化 2 使用proxy代替defineProperty 2 1 Object defineProperty 语法 2 2 Proxy的语法 3 Diff算法的提升 3 1 以往的渲染策略 3 2 Vue3的突破 4
  • STM32 定时器 跟新中断

    STM32 cubemx 定时器 跟新中断 代码地址 1 cubemx 配置 1 创建项目 2 配置RCC 3 配置时钟树 4 配置定时器 点击 Timers 选择对应的定时器 内部时钟源Clock source选择 Internal Cl
  • Retrofit中的Converter

    Converter用于转换数据 例如 请求服务器时 经常会把对象转换成json格式 或者xml 收到服务器返回的文本时 又会需要转换成对象 或者String等 如果想了解更多 请看 ResoponConverter的处理流程 一般在初始化的
  • 区块链之常用数据算法介绍

    在深入学习区块链时 不可避免的需要了解密码学 密码学流传已久 有几千年历史 在军事 外交 情报等领域有广泛的的应用 在区块链领域 也大量应用了密码学算法 比如哈希算法和椭圆曲线算法 这些数据加密算法是该技术重要组成部分 下面详细介绍下区块链