zoukankan      html  css  js  c++  java
  • 散列算法-SHA

    一种生成信息摘要的算法。主要用于数据一致性和完整性的校验

    SHA算法分很多版本,最大的分类是SHA-1和SHA-2。SHA-2包括很多子版本,SHA-224,SHA-256,SHA-384,SHA-512。

    SHA-1(可破解 http://www.cnbeta.com/articles/tech/587564.htm)

    SHA-1算法可以从明文生成160bit(40个字符)的信息摘要,示例如下

    给定明文:      abcd

    SHA-1摘要:   81FE8BFE87576C3ECB22426F8E57847382917ACF

    SHA-1 与 MD5的主要区别是什么呢?

    1.摘要长度不同

    MD5的摘要的长度128bit,SHA-1摘要长度160bit。多出32bit意味着什么呢?不同明文的碰撞几率降低了2^32 = 324294967296倍。

    2.性能略有差别

    SHA-1生成摘要的性能比MD5略低。

    SHA-2

    SHA-2是一系列SHA算法变体的总称,其中包含如下子版本:

    SHA-256:可以生成长度256bit的信息摘要。

    SHA-224:SHA-256的“阉割版”,可以生成长度224bit的信息摘要。

    SHA-512:可以生成长度512bit的信息摘要。

    SHA-384:SHA-512的“阉割版”,可以生成长度384bit的信息摘要。

    显然,信息摘要越长,发生碰撞的几率就越低,破解的难度就越大。但同时,耗费的性能和占用的空间也就越高。

    如果想要追求安全性,也可以考虑把多种摘要算法结合使用。

    明文:        abcd

    MD5摘要:e2fc714c4727ee9395f324cd2e7f331f

    SHA-256摘要:88d4266fd4e6338d13b845fcf289579d209c897823b9217da3e161936f031589

    合成摘要:e2fc714c4727ee93209c897823b9217da3e161936f031589

  • 相关阅读:
    C语言memmove()函数: 复制内存内容(可以重叠的内存块)
    #pragma pack(n)
    c++中sizeof的理解
    c/c++gdb下和发布版本下输出地址不同
    LeetCode 141. Linked List Cycle
    LeetCode 143. Reorder List
    TCP简介(一)
    通过cat方式生成yum源
    手动添加ceph的mds
    Linux 配置nfs
  • 原文地址:https://www.cnblogs.com/wade-luffy/p/7718040.html
Copyright © 2011-2022 走看看