哈希算法基本知识快速了解

  • 时间:
  • 来源:互联网
  • 文章标签:


哈希算法基本知识快速了解
    本质
        是用较少的信息来区分身份的唯一性
    拓展要求
        正向快速:快速生成hashcode
        逆向困难: 尽可能不要根据hashcode计算出原文,
            如果我们不附加一个随机的salt值,HASH口令是很容易被字典攻击入侵的解.
            还有常用的策略是进行一些异或或者移位操作,让人很难把握规律性
        输入敏感:一点信息差异hash值看起来很大不同
        冲突避免:既然是缩短就一定存在碰撞,关键在于尽可能减少
        有限空间内尽量均匀:节省空间,避免碰撞
    常见的哈希算法
        MD5:MD5 已被证明不具备"强抗碰撞性".输出128位,除了更高的碰撞率,另外已经有MD5被破解的案例.现在此算法不推荐使用,一般用SHA家族替代.
        SHA:是一个 Hash 函数族.SHA-1,SHA-2,输出160位hashcode,SHA-1 已被证明不具"强抗碰撞性"
    常见实现
        一般乘加迭代运算,在不少的hash算法中,使用的是异或+加法进行迭代,速度和前者差不多

    对于一些大的商业机构来说, MD5 和 SHA1 已经不够安全,推荐至少使用 SHA2-256 算法。

    替代方案
        Android中使用SparseArray代替HashMap
            省空间: 稀疏数组存储,使用基本类型int做key,不需要Par<K,V>节约内存
            排序的数组,二分查找,每次插入都排序,O(n),性能有失

    哈希应用
        加密(虽然本意不是这个作用)
        唯一身份识别(指纹)/数据校验
        密码学
        数据结构中
        负载均衡
            扩容
            缩容
            不均匀处理:虚拟节点
        分库分表(存在缩容和扩容问题如何处理?)

本文链接http://www.taodudu.cc/news/show-1944599.html