精华内容
下载资源
问答
  • 对现有的基于Hash函数的RFID认证协议进行分析,针对现有技术存在的不足,提出了一种基于Hash函数的低成本的RFID双向安全认证方法,该方法只需要进行一次Hash函数计算,且加入了标签ID动态更新机制,通过在后台数据库...
  • 针对基于耦合映像格子的并行 Hash 函数算法和带密钥的基于动态查找表的串行 Hash 函数算法进行了安全性分析。对于前者,发现耦合映像格子系统导致算法中存在一种结构缺陷, 在分组序号和分组消息满足特定约束关系的...
  • 赵润晓,男,1995年生,本科,E-mail:578562554@ 第1作者手机号码:180,E-mail:578562554@ 散列算法和Hash 函数 赵润晓1 1(华中科技大学物理学院 应用物理学1401班,武汉市中国430074 摘要中本文介绍了散列算法和Hash 函数...
  • NULL 博文链接:https://eleopard.iteye.com/blog/1766890
  • uthash开源的hash函数实现,里面的uthash.h可用
  • 这是清华大学王老师报告PPT,介绍了密码HASH函数上研究的最新成果
  • hash函数 c语言

    2013-07-19 21:43:26
    hash函数 的 c语言版 大家可以试试 不喜勿喷!
  • 混沌加密算法与HASH函数构造研究_12767438.zip
  • 提出了一种基于可并行和变参数的混沌分段线性映射hash函数算法。该函数通过明文扩展将并行处理的明文消息矩阵元素信息关联起来,实现了并行性。由矩阵元素位置标号决定的可变参数和矩阵元素相应的ASCII码值分别作为...
  • 关于hash函数的ppt
  • 数字签名中的短签名由于其签名长度的优势,特别适用于通信带宽受限的场合,现有的短签名方案大多是随机预言模型下可证明安全的,但是随机预言模型通常被认为过于理想化,现实中没有一种hash函数能够模拟随机预言模型,而...
  • 用于PHP扩展的MurmurHash函数。 要求 PHP 5.5。*〜PHP 5.6。* PHP 7.0。*〜PHP 7.2。* 安装 $ /path/to/phpize $ ./configure --with-php-config=/path/to/php-config $ make $ make test $ make install PHP功能...
  • php自定义hash函数实例

    2021-01-20 01:03:35
    本文实例讲述了php自定义hash函数实现方法。分享给大家供大家参考。具体分析如下: 这里演示php实现的一个简单hash算法,可以用来加密,不过这个函数过于简单,不能用来解密 function SimpleHash($str){ $n = 0; ...
  • 分析了一种基于混沌构造的Hash函数方法,发现其中存在着碰撞。提出了一种基于改进Hash函数的一次数字签名方案,并对此方案的统计性和安全性进行了分析。
  • 各种Hash函数(JAVA版)

    热门讨论 2010-05-20 18:07:10
    RS-Hash Function Value: " + ghl.RSHash(key)); System.out.println(" 2. JS-Hash Function Value: " + ghl.JSHash(key)); System.out.println(" 3. PJW-Hash Function Value: " + ghl.PJWHash(key)); System....
  • 提出了一种基于切延迟椭圆反射腔映射系统(TD-ERCS)的单向Hash函数算法.该算法只需将明文信息线性变换为系统的参数序列,然后让TD-ERCS依次迭代,再依照一定的规则提取Hash值,勿需要增加任何冗余计算.该算法的密钥在...
  • hash函数 c程序

    2015-04-21 15:11:02
    函数可以在输入Hash_QueryParameters.txt文件下,每行为一个数据(可以随便写)输入哈希表中,可以查找,删除,插入等操作
  • 在安全应用中使用的Hash函数称为密码学Hash函数 ...Hash函数被用于判断数据是否被篡改过(数据完整性) Hash函数的操作过程: 输入数据的长度首先被填充为某固定长度(如1024位)分组的整数倍,填充的内容包...

    在这里插入图片描述
    在安全应用中使用的Hash函数称为密码学Hash函数
    密码学Hash函数要求两种情况在计算上不可行(即没有攻击方法比穷举更有效):

    • 对预先指定的Hash值找到对应的数据块(单向性)
    • 找到两个不同的数据块对应相同的Hash值(抗碰撞性)
      Hash函数被用于判断数据是否被篡改过(数据完整性)

    Hash函数的操作过程:
    输入数据的长度首先被填充为某固定长度(如1024位)分组的整数倍,填充的内容包括原始消息的位长度信息。填充长度信息能够提高攻击者修改信息而保持Hash值不变的难度。
    在这里插入图片描述

    一、密码学Hash函数的应用

    1.消息认证(Message Authentication)
    是用来验证消息完整性的一种机制和服务

    • 消息认证确保收到的数据确实和发送时的一样(即没有修改、插入、删除或重放)
    • 还要求消息认证机制确保发送方声称的身份是真实有效的
      当Hash函数用于提供消息认证功能时,Hash函数值通常称为消息摘要
      消息认证中使用Hash函数的本质如下:
    • 发送者根据待发送的消息使用该函数计算一组Hash值,然后将Hash值和消息一起发送过去
    • 接收者收到后对消息执行同样的Hash计算,并将结果与收到的Hash值进行对比
    • 如果不匹配则接收者推断出消息(也可能是Hash值)遭到了篡改
      Hash函数 的运行结果必须通过安全的方式进行传输。
      在这里插入图片描述
      在这里插入图片描述
      Hash码能够通过以下方法用于提供消息认证:
      在这里插入图片描述
    • 使用对称密码算法加密消息和Hash码
    • 使用对称密码算法只对Hash码进行加密
    • 不使用加密算法,仅使用Hash函数也能实现消息认证
    • 对整个消息和Hash值加密

    b所需计算少,a、d需要加密整个消息,如果不要求提供保密性,b比a、d更有优势。

    更一般地,消息认证是通过使用消息认证码(MAC)实现的,即带密钥的Hash函数
    通常情况下,通信双方基于共享的同一密钥来认证彼此之间交互的信息时,就会使用MAC。
    MAC函数将密钥和数据块作为输入产生Hash值作为MAC码,然后将MAC码和受保护的消息一起传递或存储。
    检查消息完整性的时候,使用MAC函数对消息重新计算,并将计算结果与存储的MAC码对比。
    攻击者能对消息进行篡改,但是在不知道密钥的情况下不能够计算出与篡改后的消息相匹配的MAC值。
    MAC是Hash函数和加密函数操作的结合,即对于函数E(K,H(M)),长度可变的消息M和密钥K是函数的输入,输出是固定长度的值。MAC提供安全保护,用于抵抗不知道密钥的攻击者的攻击,

    2.数字签名
    在数字签名时,使用发送方的私钥加密消息的Hash值,其他任何知道该发送方公钥的人都能通过数字签名来验证消息的完整性。
    攻击者想要篡改消息,需要知道用户的私钥。
    数字签名的应用比消息认证更广泛。
    在这里插入图片描述
    3.其他应用

    • 用于产生单向口令文件(操作系统存储口令的Hash值而不是口令本身)
    • 用于入侵检测和病毒检测
    • 用于构建随机函数(PRF)或用作伪随机数发生器(PRNG),基于Hash函数的PRF课用于对称密码中的密钥产生

    二、密码学Hash函数的安全需求

    在这里插入图片描述
    在这里插入图片描述

    三、对Hash函数的攻击

    • 穷举攻击:不依赖任何算法的细节,仅与算法所产生的Hash值的长度有关。
    • 密码分析:依赖于具体算法的设计缺点

    安全Hash码的一般结构:
    在这里插入图片描述

    四、安全Hash函数(SHA)

    SHA算法建立在MD4算法之上,其基本框架也与MD4类似。
    SHA-1产生160位Hash值
    SHA-2的Hash值长度分别为256,384,512,分别称为SHA-256,SHA-384,SHA-512。
    在这里插入图片描述
    SHA-3:基本迭代结构为海绵结构,海绵结构与其他迭代Hash函数的结构相似。
    在海绵函数中,输入消息被分块为固定长度的分组。
    每个分组逐次作为每轮迭代的输入,同时上轮迭代的输出也反馈至下轮的迭代中,最终产生一组输出块。
    在这里插入图片描述
    海绵函数的输入、输出:
    在这里插入图片描述
    海绵函数的迭代结构:
    在这里插入图片描述
    SHA-3参数:
    在这里插入图片描述


    消息认证码

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    消息认证函数:
    在这里插入图片描述
    1.消息加密
    消息加密本身提供了一种认证手段。对称密码和公钥密码体制中,对消息加密的分析是不同的。

    • 对称加密在这里插入图片描述
      在这里插入图片描述
    • 公钥加密
      直接使用接收方公钥加密可提供保密性,但不能提供认证
      发送方私钥加密消息(数字签名),接收方用发送方的公钥对消息进行解密(验证签名),提供了认证。
      既要保密又要认证:发送方私钥加密(数字签名),发送方用接收方的公钥对上述结果进行加密(保密性)。 缺点:一次通信中要执行4次而不是两次复杂的公钥算法

    2.消息认证码
    又称密码校验和或MAC,也是一种认证技术。它利用密钥来生成一个固定长度的短数据块,并将该数据块附加在消息之后。
    在这里插入图片描述
    MAC算法不要求可逆性,加密算法必须可逆
    在这里插入图片描述
    对MAC的攻击:

    • 穷举攻击:攻击密钥空间和MAC值
    • 密码分析

    基于Hash函数的MAC(HMAC)
    基于分组密码的MAC(数据认证算法DAA、基于密码的消息认证码CMAC)
    认证加密(分组密码链——消息认证码CCM、Galoid/计数器模式GCM)
    基于Hash函数、基于MAC的PRNG


    数字签名

    一、数字签名简介

    数字签名过程的一般模型:
    在这里插入图片描述
    在这里插入图片描述
    在收发双方不能完全信任的情况下,需要除认证之外的其他方法来解决他人伪造或当事人否认的问题。
    数字签名是解决这个问题最好的方法。

    数字签名必须具有的特征:

    • 验证签名者、签名日期和时间(消息来源
    • 认证被签的消息内容(数据完整性
    • 签名由第三方仲裁以解决争执

    数字签名具有认证功能。

    攻击:
    在这里插入图片描述
    伪造:
    在这里插入图片描述
    在这里插入图片描述
    数字签名应满足的条件:
    在这里插入图片描述
    直接数字签名:
    只涉及通信双方(发收双方)的数字签名方案
    假定接收方已知发送方的公钥,用共享的密钥(对称密码)对整个消息和签名加密,则可以获得保密性
    先进行签名,再执行外层的加密,在发生争执时,第三方可以查看消息及签名。
    该方法的有效性依赖于发送方私钥的安全性。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    二、数字签名算法(DSA)

    使用安全Hash算法(SHA),最新版本还包括基于RSA和椭圆曲线密码的数字签名算法。
    两种数字签名的方法:
    在这里插入图片描述
    DSA使用的是只提供数字签名功能的算法,与RSA不同,DSA虽然是一种公钥密码方案,但不能用于加密或密钥交换。
    在RSA方法中,Hash函数的输入是要签名的消息,输出是定长的Hash码,用发送方的私钥将该Hash码加密成签名,然后发送消息及其签名。接收方收到消息,计算Hash码。接收方用发送方的公钥对签名解密,如果计算出的Hash码与解密出的结果相同,则认为签名是有效的。因为只有发送方拥有私钥,所以只有发送方能够产生有效的签名。
    DSA方法也使用Hash函数,它产生的Hash码和为此次签名而产生的随机数k作为签名函数的输入,签名函数依赖于发送方的私钥和一组参数,这些参数为一组通信伙伴所共有,我们可以认为这组参数构成全局公钥。签名由两部分组成,标记为s和r。
    在这里插入图片描述
    DSA是建立在求离散对数之困难性以及ElGamal和Schnorr最初提出的方法之上。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    三、椭圆曲线数字签名算法(ECDSA)

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述


    用户认证

    一、双向认证(Mutual Authentication)

    使通信双方互相认证彼此身份并交换会话密钥。
    已认证的密钥交换主要关注两个问题:保密性和实效性

    重放攻击的例子:
    在这里插入图片描述
    防止重放攻击的方法:

    • 为每一个用于认证交互的消息附上一个序列号,新的消息只有其序列号满足适当的顺序时才会被接收。
      这种方法的难点是要求每一方都跟踪与其交互的通信方最新的序列号。
      考虑到开销问题,序列号基本上不会用于认证和密钥交换。
    • 为每个消息附上时间戳,要求不同参与者之间的时钟是同步的
    • 挑战/应答

    二、单向认证(One-Way Authentication)

    应用领域:电子邮件服务
    邮件消息需要加密,并且邮件处理系统不拥有解密密钥
    认证的作用是接收者需要确保消息确实来自于所谓的发送者

    展开全文
  • 提出一种基于时空混沌系统的单向Hash函数构造方法.该方法通过使用单向耦合映射格子和基于迭代Logistic映射的初始状态生成函数实现明文和密钥信息的混淆和扩散,并基于密码块连接方式产生任意长度明文的128位Hash值....
  • ” 这是依靠单向hash函数来完成的。所谓单向是指很难(或者是实际上不可能)将其反转回来。一个常见的hash函数的例子是md5(),它流行于各种计算机语言和系统。 复制代码 代码如下: $data = “Hello World”; $hash =...
  • Python hash函数详解

    2020-10-26 19:39:43
    Python hash函数 hash函数功能介绍 hash() 用于获取取一个对象(字符串或者数值等)的哈希值。 hash函数的参数必须为不可变类型参数 ​ 因为hash值是唯一且不可变的,如果参数值可变,hash也会跟着改变 ​ 所以hash...

    Python hash函数详解

    hash函数功能介绍

    hash() 用于获取取一个对象(字符串或者数值等)的哈希值。

    hash函数的参数必须为不可变类型参数

    ​ 因为hash值是唯一且不可变的,如果参数值可变,hash也会跟着改变

    ​ 所以hash() 函数可以应用于数字、字符串和对象,不能直接应用于 list、set、dictionary。

    hash() 的结果不仅和对象的内容有关,还和对象的 id()

    # hash for integer unchanged
    a=181
    print('Hash for 181 is:', hash(181)
    展开全文
  • hash函数和消息认证

    千次阅读 2020-01-16 12:11:03
    设计无碰撞的Hash函数f,而攻击者对算法的攻击重点是Hash函数f 的内部结构,由于Hash函数f 和分组密码一样是由若干轮处理过程组成,所以对Hash函数f 的攻击需通过对各轮之间位模式的分析来进行,分析过程常常需要先...

    消息认证

    主要功能:确保收到的消息确实和发送的一样
    确保消息的来源真实有效

    认证码和校错码:

    现代密码学中的消息认证码与通信学的消息检错码有密切的联系,并由其演变而来,但其根源和目的是不同的,采用的技术手段有本质的差别。
    消息认证的基础是生成认证码,用来检查消息是否被恶意修改。

    区别:
    检错码是检测由于通信的缺陷而导致消息发生错误的方法。(客观环境造成的)
    认证码是用来检查由于恶意或有目的等方式修改消息的技术。(人为原因造成的)

    hash函数

    哈希函数在数据完整性和数字签名等领域有广泛的应用。
    hash函数简介
    也称散列函数、杂凑函数等,是一种单向密码体制,即它是一个从明文到密文的不可逆映射,即只有“加密”过程,不存在“解密”过程。同时,Hash函数可以将“任意”长度的输入经过变换以后得到固定长度的输出。Hash函数的这种单向特征和输出数据长度固定的特征使得它可以生成消息或数据块的“数据指纹”(也称消息摘要、哈希值或散列值)

    hash函数的表示
    对不同长度的输入消息,产生固定长度的输出。这个固定长度的输出称为原输入消息的“哈希值”或“消息摘要”(Message Digest)。

    公式表示形式: h=H(M)
    M:任意长度的消息
    H:哈希(Hash)函数或杂凑函数或散列函数
    h:固定长度的哈希值

    hash函数的特点:
    1.单向性:对于给定的哈希值h,要找到M使得H(M)=h在计算上是不可行的。(逆向不可行)
    2.抗弱碰撞性:对于给定的消息M1,要发现另一个消息M2,满足H(M1)=H(M2)在计算上是不可行的。
    3.抗强碰撞性:找任意一对不同的消息M1,M2 ,使H(M1)=H(M2 )在计算上是不可行的。
    4.随机性:当一个输入位发生变化时,输出位将发生很大变化。(雪崩效应)

    hash函数的技术核心:
    设计无碰撞的Hash函数f,而攻击者对算法的攻击重点是Hash函数f 的内部结构,由于Hash函数f 和分组密码一样是由若干轮处理过程组成,所以对Hash函数f 的攻击需通过对各轮之间位模式的分析来进行,分析过程常常需要先找出Hash函数f 的碰撞。由于Hash函数f是压缩函数,其碰撞是不可避免的。
    因此,在设计Hash函数f时就应保证找出其碰撞在计算上是不可行的。
    常用的散列函数:
    MD5
    SHA系列:
    SHA系列包括多个散列算法标准,其中,SHA-1是数字签名标准中要求使用的算法。

    • SHA-0 :正式地称作SHA,这个版本在发行后不久被指出存在弱点。
    • SHA-1:NIST于1994年发布的,它与MD4和MD5散列算法非常相似,被认为是MD4和 MD5的后继者。(160位)
    • SHA-2:实际上分为SHA-224、SHA-256、SHA-384和SHA- 512算法。
    • SHA-3: 2012年10月2日,Keccak被选为NIST散列函数竞赛的胜利者。SHA-3并不是要取代SHA-2,因为SHA-2目前并没有出现明显的弱点。由于对MD5、SHA-0和SHA-1出现成功的破解,NIST感觉需要一个与之前算法不同的,可替换的加密散列算法,也就是现在的SHA-3。

    SHA-1简介:
    SHA-1接受任何有限长度的输入消息,并产生长度为160比特的Hash值(MD5仅仅生成128位的摘要),因此抗穷举攻击的能力更强。SHA-1 设计时基于和MD4相同原理,它有5个参与运算的32位寄存器字,消息分组和填充方式与MD5相同,主循环也同样是4轮,但每轮进行20次操作,非线性运算、移位和加法运算也与MD5类似,但非线性函数、加法常数和循环左移操作的设计有一些区别。

    hash函数的攻击
    攻击者的主要目标不是恢复原始的明文,而是寻找与合法消息哈希值相同的非法消息,然后用非法消息替代合法消息进行伪造和欺骗,所以,对哈希函数的攻击也是寻找碰撞的过程。

    生日攻击和中途相遇攻击

    生日问题:
    问题:假定每个人的生日是等概率的,每年有365天(不考虑闰年)。在k个人中至少有两个人的生日相同的概率大于0.5,问k的最小值是多少?
    把每个人的生日看作在[1,365]中的随机变量。由组合数学基本知识得知k个人的生日不重复的概率为
    在这里插入图片描述
    在这里插入图片描述
    目前安全的哈希值位数是多少?
    假设哈希值位数为k,其信息集合大小为2的k次方,那么,这集合中多少个消息时使得出现碰撞的概率大于50%。

    结论:
    在这里插入图片描述
    SHA系列相关参数总结:
    在这里插入图片描述

    消息认证

    hash函数的攻击
    网络系统安全一般要考虑两个方面:一方面,加密保护传送的信息,使其可以抵抗被动攻击;另一方面,就是要能防止对手对系统进行主动攻击,如伪造、篡改信息等。认证是对抗主动攻击的主要手段,它对于开放的网络中的各种信息系统的安全性有重要作用。
    认证分为身份认证和消息认证。

    消息认证的目的:

    • 验证信息的来源是真实的,而不是冒充的,此为消息源认证。
    • 验证消息的完整性,即验证信息在传送或存储过程中是否被修改

    hash函数的分类

    1. 改动检测码MDC(Manipulation Detection Code)

    • 不带密钥的哈希函数
    • 主要用于消息完整性

    1. 消息认证码MAC(Message Authentication Code)

    • 带密钥的哈希函数
    • 主要用于消息源认证和消息完整性。

    消息认证码(MAC,Messages Authentication Codes),是与密钥相关的的单向散列函数,也称为消息鉴别码或是消息校验和。此时需要通信双方A和B共享一密钥K。
    在这里插入图片描述
    HMAC简介:
    在这里插入图片描述
    HMAC的结构:
    在这里插入图片描述
    消息验证码的功能:

    1.接收方相信发送方发来的消息未被篡改。这是因为攻击者不知道密钥,所以不能够在篡改消息后相应地篡改MAC,而如果仅篡改消息,则接收方计算的新MAC将与收到的MAC一定是不同的。

    2.接收方相信发送方不是冒充的。这是因为除收发双方外再无其他人知道密钥,因此其他人不可能对发送方发送的消息计算出正确的MAC。

    杂凑密码算法应用:
    1.消息完整性检测
    2.基于口令的身份认证
    3.口令认证(例如:采用hash函数,银行工作者无法获取用户的密码)

    哈希函数的好处

    • 口令信息实现安全传输。
    • 管理员不知道用户的口令
    展开全文
  • hash函数原理实现

    千次阅读 2018-11-20 13:22:22
    哈希函数Hash) 又称为 散列函数、散列算法、杂凑函数等 是一种单向密码体制:从明文到密文的不可逆映射 可将任意长度的输入变换为固定长度的输出 生成消息的“数据指纹”(也称消息摘要或散列值), 在数据完整性...

    哈希函数(Hash)
    又称为 散列函数、散列算法、杂凑函数等
    是一种单向密码体制:从明文到密文的不可逆映射
    可将任意长度的输入变换为固定长度的输出
    生成消息的“数据指纹”(也称消息摘要或散列值),
    在数据完整性认证和数字签名等领域有广泛的应用

    分类:
    改动检测码MDC(Manipulation Detection Code)
    不带密钥哈希函数,检测消息有无篡改
    消息认证码MAC(Message Authentication Code)
    带密钥哈希函数,认证消息源真实性与消息完整性

    主要说,hash函数作用是检测消息的完整性,所以在以减少碰撞性为原则,然后有不可逆性
    其次不管多长都需要生成固定长度的散列值

    记住上面两点,然后参考hash函数的实现原理如下:

    MD5算法是hash函数算法的一个实例。

    对MD5算法简要的叙述可以为:MD5以512位分组来处理输入的信息,且每一分组又被划分为16个32位子分组,经过了一系列的处理后,算法的输出由四个32位分组组成,将这四个32位分组级联后将生成一个128位散列值。

    第一步、填充:如果输入信息的长度(bit)对512求余的结果不等于448,就需要填充使得对512求余的结果等于448。填充的方法是填充一个1和n个0。填充完后,信息的长度就为N*512+448(bit);

    第二步、记录信息长度:用64位来存储填充前信息长度。这64位加在第一步结果的后面,这样信息长度就变为N*512+448+64=(N+1)*512位。

    第三步、装入标准的幻数(四个整数):标准的幻数(物理顺序)是(A=(01234567)16,B=(89ABCDEF)16,C=(FEDCBA98)16,D=(76543210)16)。如果在程序中定义应该是:
    (A=0X67452301L,B=0XEFCDAB89L,C=0X98BADCFEL,D=0X10325476L)。有点晕哈,其实想一想就明白了。

    第四步、四轮循环运算:循环的次数是分组的个数(N+1)

    1)将每一512字节细分成16个小组,每个小组64位(8个字节)

    2)先认识四个线性函数(&是与,|是或,~是非,^是异或)

    F(X,Y,Z)=(X&Y)|((~X)&Z)
    G(X,Y,Z)=(X&Z)|(Y&(~Z))
    H(X,Y,Z)=XYZ
    I(X,Y,Z)=Y^(X|(~Z))

    然后经过四轮遍历运算,详情见博客:
    https://blog.csdn.net/u012611878/article/details/54000607

    JAVA实现MD5

    在java中实现MD5是很简单的,在包java.security有个类MessageDigest。官方文档如下
    MessageDigest 类为应用程序提供信息摘要算法的功能,如 MD5 或 SHA 算法。信息摘要是安全的单向哈希函数,它接收任意大小的数据,输出固定长度的哈希值。

    MessageDigest 对象开始被初始化。该对象通过使用 update 方法处理数据。任何时候都可以调用 reset 方法重置摘要。一旦所有需要更新的数据都已经被更新了,应该调用 digest 方法之一完成哈希计算。

    对于给定数量的更新数据,digest 方法只能被调用一次。digest 被调用后,MessageDigest 对象被重新设置成其初始状态。

    JAVA代码如下:

    import java.security.MessageDigest;
    
    public class MyMD5 {
    
        static char[] hex = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'}; 
        public static void main(String[] args) {
            try{
                MessageDigest md5 = MessageDigest.getInstance("MD5");//申明使用MD5算法
                md5.update("a".getBytes());//
                System.out.println("md5(a)="+byte2str(md5.digest()));
                md5.update("a".getBytes());
                md5.update("bc".getBytes());
                System.out.println("md5(abc)="+byte2str(md5.digest()));
            }catch(Exception e){
                e.printStackTrace();
            }
        }
    
        /**
         * 将字节数组转换成十六进制字符串
         * @param bytes
         * @return
         */
        private static String byte2str(byte []bytes){
            int len = bytes.length;   
            StringBuffer result = new StringBuffer();    
            for (int i = 0; i < len; i++) {   
                byte byte0 = bytes[i];   
                result.append(hex[byte0 >>> 4 & 0xf]);   
                result.append(hex[byte0 & 0xf]);   
            }
            return result.toString();
        }
    } 
    
    展开全文
  • ECC结合轻量级Hash函数的RFID系统安全认证方案,黎远松,论文类
  • python hash函数_Python hash()函数

    千次阅读 2020-07-13 16:34:52
    python hash函数Python hash() is one of the built-in function. Today we will look into the usage of hash() function and how we can override it for our custom object. Python hash()是内置函数之一。 ...
  • hash函数应用(整理)

    千次阅读 2019-05-17 15:10:55
    评估hash函数优劣的基准主要有以下两个指标: (1)散列分布性 即桶的使用率backet_usage = (已使用桶数) / (总的桶数),这个比例越高,说明分布性良好,是好的hash设计。 (2) 平均桶长 即avg_backet_len,所有已...
  • 什么是hash函数

    千次阅读 2019-03-03 21:10:18
    我们再看编程的时候,经常会遇到hash函数,比如布隆过滤器,把我们的值通过多个hash函数得到key,然后映射到一个bit列中; 简单地说,Hashing 是一种数据影射(mapping) 的算法(algorithm),通常用来把一大串不定长度...
  • 第六章、Hash函数

    千次阅读 2020-11-03 21:00:46
    1、Hash函数 1、Hash函数(也称散列函数)是一个将任意长度的消息x序列映射为较短的、固定长度的一个值y的函数。 2、Hash函数的目的是为需要认证的数据产生一个‘指纹’。 为了能够实现对数据的认证,Hash应满足以下...
  • 详解 HashMap 中的 hash 函数

    万次阅读 2018-10-10 23:02:39
    hash 函数,即散列函数,或叫哈希函数。它可以将不定长的输入转变成定长的输出。在 Java 的 HashMap 中,是如何利用 hash 函数来计算 index 的,又是如何解决冲突的问题?本文将为你一一介绍。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 361,234
精华内容 144,493
关键字:

hash函数