摘要算法,也称“哈希算法”或“散列算法”,是一类将任意长度数据转化为固定长度的数据的算法。其特点是对原始数据做极小的改变,生成的数据也会大相径庭。此外,该类算法是单向算法,只可由原始数据生成摘要,不可由摘要恢复原始数据。摘要算法中比较常见的是MD系列中的MD5以及SHA系列的SHA-1,SHA-256等等。
由于摘要是固定长度的,所以它能够表示的原始数据的数量就是固定的。例如,MD5算法可以将任意长度数据转化为16字节(128比特)的散列值,所以,MD5可以表示的数据数量是$2^{128}$个,然后输入的数据有无穷多种组合,这意味着摘要算法会产生碰撞,即一些不同的数据也可能产生相同的摘要,然而这一比例在实际使用中是极低的,因而摘要算法依旧被广泛使用着。
在Python中,标准库hashlib
提供了对摘要算法的支持,