了解哈希算法
-
哈希算法也被称为散列算法, 英文名都是Hash, 用一句话概括就是,能够把任意长度的输入信息通过算法变换成固定长度的输出信息,输出信息指的就是哈希值,通常哈希值的格式是16进制或者是10进制。
哈希算法的数学意义就是哈希函数,通常哈希函数要做的事情就是给一个任意大小的数据生成出一个固定长度的数据,作为它的映射。所谓的映射就是要一一对应。
一个成熟的哈希算法需要满足以下三点:第一是安全,一个给定数据 M 容易算出哈希值 X ,而给定的哈希值 X 却不能算出数据 M ,换句话说,就是哈希算法是一个单向算法。第二点是独一无二,给定两个不同的数据时,两个数据要拥有不相同的哈希。第三是长度固定,当给定一种哈希算法,不管输入是多长的数据,输出长度都是固定的。哈希函数的独一无二性,极大程度上保证了如果数据在存储或者传输过程中有丝毫损坏,那么它的哈希就会变。
哈希算法的主要特点在于:不可逆。从哈希值不能推导出原始数据, 所以Hash算法能够广泛应用在现代密码体系中。无碰撞。不同的信息进行哈希算法后得到的值是不同的。效率高。在处理比较大的原生数据值时, 也能够快速的计算出哈希值。无规律。原始输入数据被修改一点信息, 得到的哈希值也是大不相同的
哈希算法的实现有很多种,常见的有 MD5, SHA-1, 还有 C#, Java语言等一些语言都有对应直接的 GetHashCode(), hashCode() 函数可以直接来用。
西南地区IT社群(QQ)
- 云南
- 【昆明网页设计交流吧】243627302
- 【昆明nodejs交流吧】 243626749
- 【VUE】838405306
- 【云南程序员总群】343606807
- 【昆明UI设计】104031254
- 【云南软件外包】15547313
- 贵州
- 【PHP/java源码/站长交流群】55692114
- 四川
- 【成都Java/JavaWeb交流】86669225
- 【vaScript+PHP+MySql】116270060
- 【UI设计/设计交流学习群】135794928
- 重庆
- 【诺基亚 JAVA游戏博物馆】 559479780
- 【PHP,Java,Python,C++接单】 442103442
- 西藏