还未设置个性签名
成为VIP会员 享9项特权: 开通会员

完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>

3天内不再提示

区块哈希竞猜游戏系统开发加密哈希算法概述

搭建punk2558 来源:搭建punk2558 作者:搭建punk2558 2022-06-24 09:51 次阅读

哈希算法(Hash function)又称散列算法,是一种从任何数据(文件、字符等)中创建小的数字“指纹”的方法。哈希算法只需满足把一个散列对象映射到另一个区间的需求,因此根据使用场景的不同,可将哈希算法分为加密哈希与非加密哈希。

概述

加密哈希被认为是单向函数,也就是说极难由散列函数输出的结果,回推输入的数据是什么。加密哈希函数的输入数据,通常被称为消息(message),而它的输出结果通常被称为摘要(digest)。一个理想的密码散列函数通常具有以下三个特性:

单向性:极难由一个已知的散列数值,推算出原始的消息;

唯一性:在不改动散列数值的前提下,修改消息内容是不可行的;

抗碰撞性:对于两个不同的消息,它不能给与相同的散列数值。

pYYBAGK1GGuAXaZfAAVNvkilwyM442.png

其中不可碰撞性是指以当前的算法与算力水平,哈希碰撞的开销超出人类可以接受的水平。以SHA-256为例,其哈希数值可能性约有1077种,而目前人类估计的宇宙原子总数约1080。虽然有概率论生日悖论问题存在,N位长度的哈希表可能发生碰撞测试次数不是2N次而是只有2N/2次,但仍然是一个巨大的数字。

常见的加密哈希函数有MD5、SHA-1、SHA-2(包含SHA-224、SHA-256、SHA-512等),虽然种类繁多,但除了生成摘要的长度、循环体内容等有一些差异外,算法的基本结构是一致的。下面以SHA-256为例,详细介绍加密哈希算法的执行步骤。

SHA-256实现原理

常量初始化

SHA-256算法中用到了8个哈希初值以及64个哈希常量,其中,8个哈希初值是对自然数前8个质数(2,3,5,7,11,13,17,19)的平方根的小数部分取前32 bit:

64个哈希常量是对自然数中前64个质数的立方根的小数部分取前32 bit,标记为k[t]:

附加长度值

SHA-256用一个64位的数据来表示原始消息的长度,而在信息处理的过程中给需要将消息分解成512bit大小的块,因此补位后的消息长度应该是512的整数倍。附加长度值分为两个步骤:

第一个bit位补1,然后都补0,直到长度满足对512取模后余数是448,如果长度已经满足对512取模后余数是448,需要填充512个bit;

附加长度为64bit的长度值。

为什么不可碰撞性对加密哈希算法如此重要?从SHA-256算法的实现步骤可以看出,加密哈希的逆向计算几乎是不可能的,暴力破解法的成本也太高,因此对加密哈希算法所谓的攻击实际是利用哈希碰撞为突破口进行数据伪造。以常见的保存用户密码为例,如果是明文存储,一旦发生数据泄露,那么所有的账户都会被盗用,因此常用下面一些方法进行Hash加密:

Hash加密:单纯对密码进行Hash加密无法保证密码的安全性,因为用户密码通常是短字符,无论采用哪种加密算法,都可以利用暴力破解或彩虹表攻击破解。

Hash加盐:在原消息上添加随机盐再进行哈希加密,并将盐与密码保存起来,以便下次登陆验证,添加随机盐增加了彩虹表破解的难度,促使攻击者放弃破解。但是如果对密码进行不安全的散列函数(MD5)计算,数据库泄露后,攻击者可以根据散列值找出碰撞的消息,不管这个消息是否与密码相同,都可以通过验证。

专用哈希函数加密:使用bcrypt等专门用来密码加密的哈希函数进行加密,这类函数通常运算时间较长,大大增加了攻击成本。

密码加密不单单是一个技术问题,对于攻击者来说,如果破解成本大于收益成本,即使攻破了加密的密码也是无意义的。而那些被证明可以产生散列碰撞的Hash函数,攻击它们的成本较低,随着算法的改进与硬件水平的提升,破解的成本也不断降低。从安全的角度考虑,应该及时更换不安全的哈希算法。

加密哈希的应用比较广泛,笔者详细地学习哈希算法的实现原理,也是为了更好地理解它们使用与被攻击的方式,而不仅仅是在编程中调一个函数库。在这之前以为密码学的知识比较晦涩难懂,实际上抛开中间的数学运算,整体的逻辑十分清晰,基本结构很容易理解。

审核编辑:符乾江

  • 数据
    +关注

    关注

    8

    文章

    4755

    浏览量

    81192
  • 哈希算法
    +关注

    关注

    1

    文章

    52

    浏览量

    9862
收藏 人收藏

    评论

    相关推荐

    纳米技术如何防水智能手机?

    智能手机的设计者不断寻找使它们尽可能吸引目标受众的方法。这意味着探索新技术,包括使用纳米技术来防水智....
    的头像 手托初梦 发表于 08-18 17:13 118次 阅读

    常见错误危及工业数据安全

    数据泄露有一个共同的问题——过于信任,这需要重新考虑 VPN 访问、安全配置和数据加密。
    发表于 08-18 15:49 5次 阅读
    常见错误危及工业数据安全

    什么是数据治理软件

    数据治理软件,有时也称为数据管理软件,是一套工具,可帮助组织管理和改进数据质量、法规遵从性、使用率、....
    的头像 lhl545545 发表于 08-18 10:56 101次 阅读

    生产线数字孪生开发公司怎么样?

    生产线数字孪生通过生产过程的数字化重构,在虚拟空间中实时呈现生产过程。数字孪生系统用于监控转账过程、....
    的头像 tyhrvrar 发表于 08-17 18:00 99次 阅读
    生产线数字孪生开发公司怎么样?

    eBPF安全可观测性的前景展望

    本次分享将从监控和可观测性、eBPF安全可观测性分析、内核安全可观测性展望三个方面展开。
    的头像 Linux阅码场 发表于 08-17 11:27 58次 阅读

    关于Linux字符设备基本类型

    字符(char)设备是个能够像字节流(类似文件)一样被访问的设备,由字符设备驱动程序来实现这种特性。....
    的头像 FPGA之家 发表于 08-17 09:04 58次 阅读

    Verilog比较方便的特点

    动态截取固定长度数据语法,即+:和-:的使用,这两个叫什么符号呢?运算符吗?
    的头像 FPGA之家 发表于 08-17 09:01 47次 阅读

    人工智能换脸为什么人脸转到90度时会出现漏洞?

    视频伪造是 Deepfake 技术最为主要的代表,其制作假视频的技术也被称为人工智能换脸(AI fa....
    发表于 08-16 11:04 68次 阅读

    回路电阻测试仪测试步骤

    将交流电源线、电流线、测试线接到各自插座中。(注:在连接被试品时,应将回路电阻测试电流线接于测试电流....
    发表于 08-16 10:41 33次 阅读

    如何对加密后的数据进行模糊查询

    我们先来看看第一个做法,将所有数据加载到内存中进行解密,这个如果数据量小的话可以使用这个方式来做,这....
    的头像 Android编程精选 发表于 08-16 10:14 38次 阅读

    航天宏图致力于构筑“数据+平台+应用”发展新格局

    2022年8月,主题为“未来e来·飞越梦想”的第七届深圳国际无人机展览会暨第五届中国国际无人系统博览....
    发表于 08-16 10:01 95次 阅读

    立讯精密成功入选2022中国创新力企业50强

    近日,福布斯中国发布2022中国创新力企业50强,立讯精密成功入选。
    的头像 立讯精密 发表于 08-16 09:38 124次 阅读

    四维图新正式发布2022半年报数据

          审核编辑:彭静
    的头像 四维图新NavInfo 发表于 08-16 09:35 116次 阅读

    美光下一代 232 层 NAND闪存将于2022年底前实现量产

    半导体行业十分有趣,同时也充满挑战。俗话说,“打江山难,守江山更难”,这句话形容半导体行业十分贴切。....
    发表于 08-16 09:27 51次 阅读

    基于IP协议的传输层协议

    一个包1400字节,那么一次性发送大量数据,就必须分成多个包。比如,一个10MB 的文件,需要发送7....
    发表于 08-16 09:05 62次 阅读

    MicrosoftWPF功能丰富的图表控件

    通过47 个示例应用程序探索GoXam 的可能性。我们创建了许多常见的图表类型作为您的应用程序的起点....
    的头像 lhl545545 发表于 08-15 15:12 57次 阅读

    Ping32可识别存在泄密风险行为

    在审计的同时,Ping32提供弹窗、短信、邮件等多种形式的文件外发告警通知,如:某员工在1分钟内用微....
    的头像 lhl545545 发表于 08-15 15:05 67次 阅读

    英特尔携手医渡云构建高效多方安全计算解决方案

    “临床医学离不开真实世界的研究,而真实世界研究依赖高质量数据。我们正通过构建更为安全和高效的多方安全....
    发表于 08-15 11:48 174次 阅读

    如何利用Matplotlib用上漂亮的插图

    matplotlib官方有一份短小精悍的小文档,今天分享的就是这个: 官网的左下角有 自带的绘图指南....
    的头像 云深之无迹 发表于 08-15 10:23 113次 阅读

    FS-NER 的关键挑战

    小样本 NER 需要从很少的实例和外部资源中获取有效信息。本文提出了一个自描述机制,可以通过使用全局....
    的头像 深度学习自然语言处理 发表于 08-15 09:42 64次 阅读

    FPGA的上电过程介绍

    目前,大多数FPGA芯片是基于 SRAM 的结构的, 而 SRAM 单元中的数据掉电就会丢失,因此系....
    发表于 08-15 09:13 123次 阅读

    寒武纪科技发布2022年半年报数据

          审核编辑:彭静
    的头像 寒武纪科技 发表于 08-14 15:31 290次 阅读

    南京市新一代政务云推进智慧城市建设

    让城市更聪明一些、更智慧一些,是推动城市治理体系和治理能力现代化的必由之路。未来几年,南京计划成为常....
    发表于 08-14 14:44 79次 阅读

    触景无限科技荣膺最新一批国家级专精特新“小巨人”企业称号

    近日,北京市经济和信息化局公布了第四批专精特新“小巨人”企业名单,触景无限科技(北京)有限公司荣膺最....
    发表于 08-14 12:01 67次 阅读

    孔阵屏蔽效能计算方式比较

    电磁屏蔽是抑制辐射干扰的有效手段 ,是电磁兼容性技术中的一项重要内容.电子设备通常难以做到连续密封屏....
    的头像 电子万花筒 发表于 08-14 11:08 131次 阅读

    C语言-基本数据类型与位运算

    这篇文章作为基础知识点,总结C语言的基本数据类型有哪些,浮点数的精度,整数变量的空间范围,变量定义语....
    的头像 DS小龙哥-嵌入式技术 发表于 08-14 09:56 183次 阅读

    如何让外资投资助力印度发展制造业

    不过该消息目前在印媒采访印度政府高级官员口中被否认,并表示当前印度政府没有限制中国手机品牌在印度市场....
    的头像 电子发烧友网 发表于 08-14 09:54 130次 阅读

    基于生成对抗网络对随机变化进行建模

    在这项工作中,我们使用一种新颖的风格特征表示学习方法来解决任意图像风格转移的挑战性问题。作为图像风格....
    的头像 lhl545545 发表于 08-14 09:29 63次 阅读

    耐科装备半导体封装产品被中止科创板上市

    耐科装备本次拟公开发行股份不超过2050万股,募集4.12亿元资金,用于半导体封装装备新建项目以及W....
    发表于 08-12 13:56 146次 阅读

    聚焦数据价值激活 西部数据创新存储技术加速开放计算落地

    现如今,数据中心、云计算、边缘计算早已不是简单的技术名词,各类新型应用与技术的不断涌现,正在渗透到生....
    的头像 话说科技 发表于 08-12 13:20 104次 阅读
    聚焦数据价值激活 西部数据创新存储技术加速开放计算落地

    几种常见的机器被黑情况

    随着开源产品的越来越盛行,作为一个Linux运维工程师,能够清晰地鉴别异常机器是否已经被入侵了显得至....
    的头像 马哥Linux运维 发表于 08-12 08:57 78次 阅读

    污水管道网数据监管系统

    污水管道网数据监管系统 智能污水管道网数据监管系统 AMT-MD400 一.产品概述 智能排水/污水....
    的头像 仪器仪表在线设备 发表于 08-12 00:53 78次 阅读
    污水管道网数据监管系统

    指针的概念

      简单回顾一下指针的概念 内存会划分以字节为单位的空间,每一个字节都有一个编号(地址/指针) 指针....
    的头像 C语言编程学习基地 发表于 08-11 15:16 108次 阅读

    OA系统与ERP系统进行整合打通,实现数据对接

    随着企业发展,企业仅仅布置一套系统的可能性越来越小。企业内部OA办公系统、CRM、ERP等全面开花也....
    的头像 秒秒说数据 发表于 08-11 13:26 99次 阅读

    Linux下文件IO相关操作

    Linux - 基础 IO 文件 IO 相关操作 stdin stdout stderr 系统文件 ....
    发表于 08-11 11:55 68次 阅读

    IBM提供SOAR解决方案帮助企业整合加快事件响应速度

    自2020年以来,企业和组织对安全AI和自动化技术的使用跃升了近五分之一; 关键性基础设施组织(包括....
    的头像 IBM中国 发表于 08-11 10:29 218次 阅读

    基于昇腾AI的MoloSight针对不同的使用场景提供3种不同版本选择

    近日,基于昇腾AI,摩赛恩与华为携手推出质谱智能计算系统MoloSight,并正式加入昇腾万里伙伴计....
    的头像 华为计算 发表于 08-11 09:49 313次 阅读

    context的四个基本方法

    很多时候,我们会遇到这样的情况,上层与下层的goroutine需要同时取消,这样就涉及到了gorou....
    的头像 马哥Linux运维 发表于 08-11 09:39 93次 阅读

    基于 NVMe 的存储设计中值得关注的四个趋势

    NVM Express (NVMe) 是一种用于固态驱动器 (SSD) 的通信接口,它正在打破为旋转....
    的头像 闷~~ 发表于 08-10 15:31 95次 阅读
    基于 NVMe 的存储设计中值得关注的四个趋势

    成功打破数据孤岛的案例——以下秒数据为例

    数据孤岛一般是指,企业将不同的业务、部门之间的数据各自存储、定义,导致企业中的数据像一个个孤岛一样被....
    的头像 秒秒说数据 发表于 08-10 14:16 60次 阅读

    Python如何爬取天气数据

    天气预报我们每天都会关注,我们可以根据未来的天气增减衣物、安排出行,每天的气温、风速风向、相对湿度、....
    的头像 Android编程精选 发表于 08-10 09:57 140次 阅读

    华为和中国卫星应用协会牵头联合成立智能遥感开源生态联盟

    8月9日,以“共绘遥感创新应用新蓝图”为主题的智能遥感开源生态联盟第二次会议在武汉光谷成功举办。本次....
    的头像 华为计算 发表于 08-10 09:51 672次 阅读

    三极管的电流增益在正向与反向变化

    从基本结构上,双极性三极管(Bipolar Junction Transistor),无论是NPN还....
    发表于 08-09 09:04 27次 阅读

    机器学习中最常见错误解决方案

    近日,软件架构师、数据科学家、Kaggle 大师 Agnis Liukis 撰写了一篇文章,他在文中....
    的头像 新机器视觉 发表于 08-08 16:56 751次 阅读

    PostgreSQL如何对社区做出贡献

    在社区互动上,虽然有一些受访者提到使用 PostgreSQL 邮件列表作为与核心团队和整个项目交互的....
    的头像 city_prolove 发表于 08-08 15:17 109次 阅读

    TCP和UDP的原理以及区别

    最近重新认知了一下TCP和UDP的原理以及区别,做一个简单的总结。
    发表于 08-08 14:34 61次 阅读

    计算机解题的基本思想方法和步骤

    算法的描述:是对要解决一个问题或要完成一项任务所采取的方法和步骤的描述,包括需要什么数据(输入什么数....
    发表于 08-08 11:57 63次 阅读

    一些行之有效的,优化接口性能的办法

    而用户名称、性别、等级、头像在用户服务中,积分在积分服务中,成长值在成长值服务中。为了汇总这些数据统....
    的头像 city_prolove 发表于 08-08 11:11 99次 阅读

    趋势视图的布局

    趋势视图是一种动态显示对象。 如果HMI 设备支持,趋势视图可以持续显示实际的过程数据和记录中的过....
    的头像 机器人及PLC自动化应用 发表于 08-08 11:01 71次 阅读

    低分辨率行为识别技术具有广泛的应用价值

    安防监控是智慧城市的重要组成部分。然而,在城市监控场景下,行人目标往往距离摄像头远,所占像素小,这为....
    的头像 OpenCV学堂 发表于 08-08 09:58 122次 阅读

    CH376S以字节方式写入数据失败怎么处理?

    主控芯片:PICF18 通讯方式:8位并口 中断方式:状态最高位检测         USB初始化正常...
    发表于 07-13 07:46 233次 阅读

    CH375写数据时写不进去怎么解决?

    换行怎么输入? mCmdParam.ByteWrite.mByteBuffer[0] = '/'; mCmdParam.ByteWrite.mByteBuffer[1] = 'n'; mCm...
    发表于 07-12 06:16 147次 阅读

    CH375的标准请求数据接收不匹配怎么解决?

    Chek OK USB work type:51 Set mode OK INT = 0B bus rest! INT = 0B bus rest! INT = 0B bus res...
    发表于 07-08 06:33 206次 阅读

    【ELT.ZIP】OpenHarmony啃论文俱乐部——多维探秘通用无损压缩

    本文出自 ELT.ZIP 团队,ELT<=>Elite(精英),.ZIP为压缩格式,ELT.ZIP即压缩精英。 成员: 上海...
    发表于 07-02 18:17 5763次 阅读

    【飞控开发基础教程6】疯壳·开源编队无人机-SPI(六轴传感器数据获取)

    COCOFLY教程——疯壳·无人机·系列SPI(六轴传感器数据获取)             &nb...
    发表于 05-30 11:19 1889次 阅读
    【飞控开发基础教程6】疯壳·开源编队无人机-SPI(六轴传感器数据获取)

    http request请求不到接口数据是为什么?

    import http from '@ohos.net.http'; export function doList() {     const url     const httpRequ...
    发表于 04-25 10:15 1316次 阅读

    如何解决CAN发送数据发送不出去的问题啊

    在调试CAN,接收数据都没什么问题,但是发送那一块,有的时候rt_device_write的返回值为0,就是没发出去,这个应该怎么解决这...
    发表于 04-20 09:22 2861次 阅读

    请问FINSH是否具备输入/输出换向功能?

    有时候需要FINSH把接收到的数据保存到本地文件中,有时候需要从本地文件中导入输入命令或数据,FINSH是否有这个功能 ?...
    发表于 04-18 09:22 1506次 阅读

    如何获取bh1750软件包bh1750.c文件的光照强度数据?

    请问怎么将bh1750软件包2.0里的bh1750_read_light是光强的数据吗?(onenet_mqtt_upload_string("light", 这里应该是什么) < ...
    发表于 04-06 09:35 1120次 阅读

    ListContainer代码获取高度不准怎么解决?

    int listContainerHeight = listContainer.getHeight(); 通过这个方法获得的方法,返回的数据和实际数据不一样, 有类似...
    发表于 03-23 10:19 823次 阅读