Hash算法是验证文件完整性的重要算法,是一种数学算法的实际应用。本次试验我们将以Hash算法中著名的HSA-1为例,向大家展示Hash算法的编程实现方法,以便更好地理解算法本身以及数学理论到程序实现的过程。通过试验,对Hash算法本身有进一步直观的认识,并对编程实现有所了解和体会。
SHA(Secure Hash Algorithm,安全散列算法)是一种数据加密算法。该算法的思想是接收一段明文,然后以一种不可逆的方式将它转换撑一段(通常更小)密文,也可以简单的理解为取一串输入码(称为预映射或信息),并把它们转化为长度较短,位数固定的输出序列即散列值(也成为信息摘要或信息认证代码)的过程。从理论上讲,所有可能的明文将散列成一个唯一的密文,但实际并不是这样。大多数时候,几乎有无穷多个不同的字符串可以产生完全相同的散列值,因此一个好的散列函数,在实际中很难有两个可理解的字符串三列成相同的值。单项散列函数的特征是容易产生散列值,但是由于它的输出不以任何可辨认的方式反映输入,所以从给定的散列值反求出输入信息非常困难。
SHA本身有一个标准,其中给出了有关SHA的各种信息,是我们进行通用化编程的基础,也是我们全面了解SHA的根本。
Visual C++ 6.0双击。选择“文件”“新建”。
创建一个win32控制台工程,工程名称和位置自定,此工程名称为“sha1”。
左侧工作区,选择“FileView”选项卡,右击工程名称,选择“添加文件到工程”。
在C:\代码\BUPT1010B中找到两个.h文件和两个.cpp文件添加到工程中,如下图所示。
双击sha1Test.cpp,找到下图中的代码,“你好”是明文,编译运行后输出“你好”的摘要。
编译运看到行程序,可以运行结果。
联系客服