0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取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

    文章

    7221

    浏览量

    90070
  • 哈希算法
    +关注

    关注

    1

    文章

    56

    浏览量

    10799
收藏 人收藏

    相关推荐

    深入解析ECC256椭圆曲线加密算法

    点击蓝字关注我们一、加密算法概述数据加密的基本过程就是对原来为明文的文件或数据按某种算法进行处理,使其成为不可读的一段代码为“密文”,使其只能在输入相应的密钥之后才能显示出原容,通过这
    的头像 发表于 12-26 16:32 648次阅读
    深入解析ECC256椭圆曲线<b class='flag-5'>加密算法</b>

    【RA-Eco-RA4E2-64PIN-V1.0开发板试用】RA4E2使用之SHA256加密解密

    和解密算法来进行解释和说明数据加密和解密操作的。 SHA-256是一种哈希函数,属于SHA-2(Secure Hash Algorithm 2)家族的一部分。它是由美国国家安全局(NSA)设计,并由
    发表于 12-23 18:18

    加密算法在网络安全中扮演什么角色?

    : 通过哈希函数和消息认证码(MAC),加密算法可以检测数据在传输过程中是否被篡改,确保数据的完整性。 提供身份验证 : 非对称加密算法和数字签名技术可以验证通信双方的身份,防止身份冒充攻击。 实现数据签名 : 数字签名使用非
    的头像 发表于 12-17 16:00 189次阅读

    加密算法的选择对于加密安全有多重要?

    加密算法的选择对于加密安全至关重要,因为它直接影响到数据保护的有效性和可靠性。以下是几个关键点来说明加密算法选择的重要性: 加密强度: 加密算法
    的头像 发表于 12-17 15:59 208次阅读

    嵌入式系统开发中的测试方法 嵌入式系统开发与AI结合应用

    嵌入式系统开发中的测试方法 嵌入式系统开发是一个复杂的过程,涉及到硬件和软件的紧密结合。测试是确保系统可靠性和性能的关键步骤。以下是一些常用的测试方法: 单元测试 : 单元测试是针对软件中最小的可
    的头像 发表于 12-09 10:22 680次阅读

    嵌入式系统开发与硬件的关系 嵌入式系统开发常见问题解决

    嵌入式系统开发与硬件的关系 嵌入式系统是专为特定应用设计的计算机系统,它们通常嵌入在所控制的设备中。这些系统的关键特点是它们与硬件的紧密集成,这意味着软件必须为特定的硬件平台量身定制。
    的头像 发表于 12-09 09:38 533次阅读

    华纳云:加密算法在保护网络安全中扮演什么角色

    。只有具有正确密钥的接收方才能解密数据并还原其原始形式。 数据完整性:加密算法可以用于计算和验证数据的完整性。通过使用哈希函数或数字签名算法,发送方可以生成数据的摘要或签名,并将其附加到数据上。接收方可以使用相
    的头像 发表于 12-06 15:22 304次阅读

    直播报名丨第4讲:AI检测系统落地工具详解

    AI检测实战技能,实现职业发展的新跨越。本系列课程共分为4讲:第1讲AI检测系统开发流程概述第2讲热门AI检测案例解析第3讲如何选择合适的算法模块第4讲AI检测系
    的头像 发表于 11-23 01:05 225次阅读
    直播报名丨第4讲:AI检测<b class='flag-5'>系统</b>落地工具详解

    直播报名丨第3讲:如何选择合适的算法模块

    AI检测实战技能,实现职业发展的新跨越。本系列课程共分为4讲:第1讲AI检测系统开发流程概述第2讲热门AI检测案例解析第3讲如何选择合适的算法模块第4讲AI检测系
    的头像 发表于 11-16 01:06 237次阅读
    直播报名丨第3讲:如何选择合适的<b class='flag-5'>算法</b>模块

    华纳云:Chord算法如何管理节点间的联系?

    Chord算法是一种分布式哈希表(DHT)协议,它通过构建一个环状结构来管理节点间的联系。以下是Chord算法如何管理节点间联系的具体方式: 环状结构: Chord算法将所有节点和键
    发表于 11-08 16:03

    智能系统的安全性分析

    )和非对称加密(如RSA)等技术,确保数据在存储和传输过程中的机密性。 加密算法应经过广泛验证和测试,以确保其安全性和可靠性。 数据完整性 : 使用哈希算法(如SHA-256)和消息认
    的头像 发表于 10-29 09:56 375次阅读

    什么是默克尔树(Merkle Tree)?如何计算默克尔根?

    01 默克尔树的概念 默克尔树(Merkle Tree)是一种特殊的二叉树,它的每个节点都存储了一个数据块的哈希值。哈希值是一种可以将任意长度的数据转换为固定长度的字符串的算法,它具有唯一性和不可
    的头像 发表于 09-30 18:22 1264次阅读
    什么是默克尔树(Merkle Tree)?如何计算默克尔根?

    开源物联网技术--哈希算法MD5加密功能技术分享

    MD5(Message-Digest Algorithm 5)是一种常用的哈希函数,通常用于数据加密和安全校验等场合。MD5 算法可以将任意长度的消息输入计算出一个固定长度的摘要,其生成的摘要具有
    的头像 发表于 09-21 09:57 2010次阅读
    开源物联网技术--<b class='flag-5'>哈希</b><b class='flag-5'>算法</b>MD5<b class='flag-5'>加密</b>功能技术分享

    SiRider S1芯擎工业开发板测评+1.防止黑客入侵通信监控系统(PSA)

    能望洋兴叹,咱们的系统也就安全无忧啦! 哈哈,好的!接下来让我们用一场别开生面的“冒险”来解释如何在 SiRider S1芯擎工业开发板中使用哈希算法,就像你是位勇敢的探险家,而
    发表于 09-08 21:58

    基于 FPGA 的光纤混沌加密系统

    。FPGA 设计加密算法具有安全性高,加密速度快,开发周期短,开发成本较低,可重配,可靠性高以及移植性好等优点。 3.2 混沌序列密钥设计 混沌序列的产生主要有两类:一类是利用微分方程
    发表于 04-26 17:18