杂凑算法 5.1 SHA-256 【实验目的】 掌握目前普遍使用的SHA 算法的基本原理,了解其主要应用方法。 【原理简介】 SHA(Secure Hash Algorithm )算法由美国NIST 开发,作为数字签名标准中使用的Hash 算法,并在1993 年作为联邦信息处理标准公布。NIST 在1995 年公布了其改进版本SHA-1,在2001 年发布了三个额外的SHA 变体,这三个函数都将消息对应到更长的消息摘要,以它们的摘要长度(以位计算)加在原名后面来命名:SHA-256,SHA-384 和SHA-512 。SHA-256 将不定长的输入变换为256b 定长输出,作为输入数据的摘要(又称为数据指纹),反映了数据的特征。设摘要长度为n,则对于给定输入数据,找到另一不同数据但具有相同摘要的概率为2.n ,根据生日攻击的原理,寻找到两个不同数据具 . n 有相同摘要的概率为22 。Hash 算法被广泛用于数据完整性保护、身份认证和数字签名当中。 关于SHA-256 基本原理及数学基础的介绍,请参阅相关参考书。 【实验环境】 安装Windows 操作系统的PC 一台,其上安装Visual C++ 6.0 以上编译器。 【实验步骤】 (1)从http://cryptopp.sourceforge.net/docs/ref521/sha_8cpp-source.html 网页上得到算法的源代码。 (2)构造一个长度为1KB 左右的文本文件,以SHA-256 算法对文件计算Hash 值。 (3)在上述文本文件中修改一个字母或汉字,再次计算Hash 值,与步骤(2)中Hash 值进行比较,看看有多少比特发生改变。 (4)测试SHA-256 算法的速度。 【实验报告】 (1)简述SHA 算法流程。 (2)写出步骤(2)和步骤(3)中的文本文件和Hash 值。 (3)写出所使用机器的硬件配置以及SHA-256 的测试速度。 【思考题题】 考虑Hassh 算法如何用于于数据完整性性校验,与常用用的CRC 校验方方法有何不同? Whirlpoool 【实验目目的】 通过本实实验,掌握Whhirlpool 算法的的基本原理,了了解其主要应用用方法。 【原理简简介】 2000 年,Vincent Rijmeen 和Paulo S.LL.M.Barreto 设计了Whirlpoool,它是目前NNESSIE (New Europeaan Schemes forr Signature, Inttegrity, and Enccryption )唯一一推荐使用的HHash 函数,同时它也也被国际标准组组织ISO 和国际际电子技术协会会IEC 采用作作为ISO/IEC 110118-3 国际标准。 Whirlpoool 是在分组密码码Square 的基基础上设计的,算法的输入长长度不超过22556b,产生512b 的Haash 值。最初的的版本中,S 盒盒是随机生成的的,具有良好的密码学特性性;2001 年的版本中,对它进行了改改进,使其密码码学特性更好,而且更便于用用硬件实现;22003 年的版本中,进进一步修改了扩扩散阵列(Difffusion Matrix))。Whirlpool 是是个很新的算算法,实现方面经验很很少,拥有与AAES 相似的性能和空间特性性,与SHA-5122 相比,Whirllpool 需要更多硬件资资源,但性能更更好。 关于Whiirlpool 基本原理及数学基础础的介绍,请参参阅相关参考书书。 【实验环环境】 安装Winndows 操作系统统的PC 一台,其上安装Vissual C++ 6.0 以以上编译器。 【实验步步骤】 (1)从htttp://cryptopp.ssourceforge.net/docs/ref521/wwhrlpool_8cpp-source.html 网页上得到算法的源代代码。 (2)构造造一个长度为11KB 左右的文本本文件,以WWhirlpool 算法对对文件计算Haash 值。 (3)在上述文本文件中中修改一个字母母或汉字,再次次计算Hash 值,,与步骤(2)中中Hash 值进行比较,看看有多少比比特发生改变。 (4)测试试Whirlpool 算法的速度。 【实验报报告】 (1)简述述Whirlpool 算法流程。 (2)写出出步骤(2)和步步骤(3)中的的文本文件和HHash 值。 (3)写出出所使用机器的的硬件配置以及及Whirlpool 的的测试速度。 【思考题题】 思考Whiirlpool 与本章前面介绍的HHash 算法的区别别。 46 HMAC 【实验目目的】 掌握目前前普遍使用的HHAMC 算法的基本原理,了了解其主要应用用方法。 【原理简简介】 HMAC 是是密钥相关的的哈希运算消息息认证码(keeyed-Hash Meessage Authenntication Code),HMAAC 运算利用哈哈希算法,以一一个密钥和一个个消息为输入,生成一个消息摘要作为输出。 关于HMMAC 基本原理及及数学基础的介绍,请参阅阅相关参考书。 【实验环环境】 安装Winndows 操作系统统的PC 一台,其上安装Vissual C++ 6.0 以以上编译器。 【实验步步骤】 (1)从hhttp://cryptopp. sourceforge.ne t/docs/ref521/hhmac_8cpp-souurce.html 网页上得到算法的源代码码。 (2)构造造一个长度为11KB 左右的文本本文件,以HHMAC 算法对文文件计算Hashh 值。 (3)在上上述文本文件中中修改一个字母母或汉字,再次计算Hash 值,与步骤(2)中Hash 值进行比比较,看看有多多少比特发生改改变。 (4)测试试HMAC 算法的速度。 【实验报报告】 (1)简述述HMAC 算法流流程。 (2)写出出步骤(2)和步步骤(3)中的的文本文件和HHash 值。 (3)写出出所使用机器的的硬件配置以及及HMAC 的测测试速度。 【思考题题】 思考HMMAC 与本章前面面介绍的Hashh 算法的区别。。 47