哈希是一种十分常用的计算技术,其主要作用是用来把原有的任意数据转换成不可逆的一个字符串,这样就使得原有数据在网络中传输更加安全,即使被截取,也无法被破解。
哈希算法的原理是:它将输入的任意长度数据(如文件或字符串)映射到一个固定长度的哈希值,哈希值可用来识别数据是否变化。当输入的数据发生变化时,哈希函数的输出结果也会发生变化;但反过来,即使输出哈希值与原始输入不同,也无法从输出哈希值确定原始输入值。而哈希算法的灵活性使得其可以为一般用途和特定领域的强安全性应用被广泛使用。
哈希以常用的算法包括MD5、SHA-1、SHA-256等,它们以不同的方式把每一个小的输入块映射到一个固定长度的哈希值。根据情况选择哈希算法的重要原则是,保持在足够安全的水平,也要能够满足真实应用的性能要求。
哈希算法在实现密码保护、软件和文档防篡改、确认文件完整性、身份认证等方面有着重要的作用。例如,MD5算法可以被用来加密用户密码,这样即使当用户的密码被截取或传输,也无法破解用户的账户信息。此外,SHA-1算法可被用来确认文件的完整性,这样就确保下载的文件在传输过程中不会被改变。
哈希算法更可用来验证消息的完整性,用来检测当前消息是否被篡改或串改。例如,消息2的哈希值(hash2)仅能通过原始消息1(msg1)来生成,这是根据算法内如,只要 msg1 发生变化,那么 hash2 也必定改变。此时再去计算改被改动消息的哈希值(hash2'),如果 hash2 和 hash2' 不同,则说明消息已被改变。