精华内容
下载资源
问答
  • 散列算法

    千次阅读 2018-04-08 11:43:50
    什么是“散列算法/哈希算法”? 散列算法可以把[任意尺寸]的数据(原始数据)转变为一个[固定尺寸]的”小数据”(叫”散列值”或”摘要”) 摘要长度 对于某个具体的散列算法,得到的散列值总是固定的.散列值的长度又...

    什么是“散列算法/哈希算法”?

    散列算法可以把[任意尺寸]的数据(原始数据)转变为一个[固定尺寸]的”小数据”(叫”散列值”或”摘要”)

    摘要长度

    对于某个具体的散列算法,得到的散列值总是固定的.散列值的长度又称”摘要长度”.
    以下是常见散列算法的摘要长度:
    CRC32 32比特(4字节)
    MD5 128比特(16字节)
    SHA1 160比特(20字节)

    散列算法的特色

     1. 不可逆性
     从刚才的描述来看,散列似乎有点像压缩.但散列算法跟压缩算法是完全不同的,压缩速发是可逆的(可以把压缩后的数据再还原),而散列算法不可逆.
     还有人趁把散列算法称为”加密算法”,这也是不对的,因为加密算法是可逆的.而散列算法是不可逆的.
     2. 确定性
      通过某种散列算法,分别对两个原始数据计算散列值。如果算出来的散列值不同,那么可以 100% 肯定这两段数据是不同的——这就是“确定性”。
      但反过来,如果这两段数据的散列值相同,则只能说,这两段数据【非常可能】相同。所谓的“非常可能”,就是说,还达不到百分百。具体原因,请看下一节“散列函数的可靠性”。

    展开全文
  • java的散列算法

    2011-05-13 08:45:42
    java的散列算法,java的散列算法,java的散列算法,java的散列算法,方便有需要的兄弟,java的散列算法java的散列算法java的散列算法java的散列算法
  • SHA散列算法

    2015-02-10 14:09:57
    SHA散列算法,可以非常方便的家密码散列成16进制数据。
  • 散列函数、散列算法的Python语言实现

    目录

    背景

    散列:Hashing

    散列表 Hash table

    完美散列函数

    应用

    例子

    散列函数的最酷应用——区块链

    含义

    本质特征

    散列函数的设计

    折叠法

    平方取中法

    非数项处理

    散列冲突解决方案

    跳跃式探测方法

    再散列

    二次探测

    数据项链——散列和列表的折中,O(1)和O(n)的折中

    映射抽象数据类型和其实现

    抽象数据类型“映射”:ADT Map

    代码示例

    散列算法分析

    排序与查找小结


    背景

    散列:Hashing

    • 由前所述,如果数据项按照大小排好序,采用二分查找降低算法复杂度
    • 构造新的数据结构,使得查找算法的复杂度降低到O(1)
      • 需要对数据项所处的位置有更多的先验知识

    散列表 Hash table

    • 每一个存储位置——槽,每个槽都有唯一的名称

    采用求余数的方法,得到散列表

    • 负载因子:槽被数据项占的比例 

      完美散列函数

    如果一个散列函数能把每个数据项都映射到不同的槽中,那么这个散列函数称为”完美散列函数“

    数据项经常变动,如何设计完美散列函数?

    好的散列函数具备特性

    1. 冲突最少(近似完美)
    2. 计算难度低(额外开销小)
    3. 充分分散数据项(节约空间) 

       

    应用

    ”指纹函数“

    1. 压缩性——任意长度的数据得到的”指纹“长度固定
    2. 易计算性——从原数据计算”指纹“很容易,从指纹计算原数据几乎不可能
    3. 抗修改性——对原数据的微小改动都会引起”指纹"的巨大改变
    4. 抗冲突性——已知原数据和“指纹”,要找到相同指纹的数据(伪造)非常困难

    例子

    import hashlib
    hashlib.md5("hello world!").hexdigest()
    hashlib.sha1("hello world!").hexdigest()
    # 还可以用update方法
    m = hashlib.md5()
    m.update("hello world!")
    m.update("this is part #2")
    m.hexdigest()

     

    • 加密形式保存密码
    • 防止文件篡改
    • 彩票投注应用

    散列函数的最酷应用——区块链

    含义

    区块链是一种分布式数据库

    通过网络连接的节点,每个节点都保存着整个数据库的所有数据,任何地点存入的数据都会完成同步

    本质特征

    去中心化:不存在任何控制中心,协调中心节点。所有的节点都是平等的,无法被控制

     

     

     

    工作量证明:谁的工作量大谁就掌握全网的修改;

     

    散列计算不是非常容易计算吗?为什么要付出海量计算? 

    因为难以计算,所以控制了新区块生成的速度,便于在整个分布式网络中同步

    散列函数的设计

    折叠法

    平方取中法

    非数项处理

    增加权重是处理变位词的好办法,但增加了计算量

    因此,散列函数不能成为存储过程和查找过程的计算负担,否则直接做顺序查找、二分查找即可

    散列冲突解决方案

    跳跃式探测方法

    再散列

    散列表的长度设置为质数,保证均匀分布

    二次探测

     

    数据项链——散列和列表的折中,O(1)和O(n)的折中

    映射抽象数据类型和其实现

    抽象数据类型“映射”:ADT Map

    代码示例

    H=HashTable()
    H[54]="cat"
    H[24]="dog"
    print(H.slots)
    print(H.data)
    print(H[24])  # dog
    print(H[20])  # None

    class HashTable:
        def __init__(self):
            self.size = 11
            self.slots = [None]*self.size
            self.data = [None]*self.size
    

    散列算法分析

    排序与查找小结

    展开全文
  • 要使用一个特定的散列算法,可以用适当的构造器函数或new()来创建一个散列对象。不论使用哪个具体的算法,这些对象都使用相同的API。 1.1 散列算法 由于hashlib有OpenSSL提供“底层支持”,所以OpenSSL库提供的所有...
  • 下面小编就为大家带来一篇散列算法与散列码(实例讲解)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
  • hmac散列算法python源代码
  • 赵润晓,男,1995年生,本科,E-mail:578562554@ 第1作者手机号码:180,E-mail:578562554@ 散列算法和Hash 函数 赵润晓1 1(华中科技大学物理学院 应用物理学1401班,武汉市中国430074 摘要中本文介绍了散列算法和Hash 函数...
  • Heritrix扩展散列算法

    2013-05-17 14:15:10
    Heritrix扩展散列算法
  • 散列算法与加密算法

    2017-10-10 17:31:00
    (2)散列算法与加密算法 md5是本文会使用的散列算法,加密算法本文不会涉及。散列和加密本质上都是将一个Object变成一串无意义的字符串,不同点是经过散列的对象无法复原,是一个单向的过程。例如,对密码的加密...

    (2)散列算法与加密算法

    md5是本文会使用的散列算法,加密算法本文不会涉及。散列和加密本质上都是将一个Object变成一串无意义的字符串,不同点是经过散列的对象无法复原,是一个单向的过程。例如,对密码的加密通常就是使用散列算法,因此用户如果忘记密码只能通过修改而无法获取原始密码。但是对于信息的加密则是正规的加密算法,经过加密的信息是可以通过秘钥解密和还原。

    展开全文
  • 无线网络安全技术201111散列算法和mac算法.pptx
  • 对于SHA安全散列算法,以前没怎么使用过,仅仅是停留在听说过的阶段,今天在看图片缓存框架Glide源码时发现其缓存的Key采用的不是MD5加密算法,而是SHA-256加密算法,这才勾起了我的好奇心,所以趁着晚上没啥事,来...
  • 认证及散列算法

    2013-03-28 14:49:40
    网络安全技术中消息认证及散列算法
  • SHA (Secure Hash Algorithm,译作安全散列算法) 是美国国家安全局 (NSA) 设计,美国国家标准与技术研究院(NIST) 发布的一系列密码散列函数
  • Shiro-散列算法

    2018-04-18 14:36:32
    Shiro-散列算法 5.2 散列算法 散列算法一般用于生成数据的摘要信息,是一种不可逆的算法,一般适合存储密码之类的数据,常见的散列算法如MD5、SHA等。一般进行散列时最好提供一个salt(盐),比如加密密码...

    Shiro-散列算法

    5.2 散列算法 (SHA)

    散列算法一般用于生成数据的摘要信息,是一种不可逆的算法,一般适合存储密码之类的数据,常见的散列算法如MD5、SHA等。一般进行散列时最好提供一个salt(盐),比如加密密码“admin”,产生的散列值是“21232f297a57a5a743894a0e4a801fc3”,可以到一些md5解密网站很容易的通过散列值得到密码“admin”,即如果直接对密码进行散列相对来说破解更容易,此时我们可以加一些只有系统知道的干扰数据,如用户名和ID(即盐);这样散列的对象是“密码+用户名+ID”,这样生成的散列值相对来说更难破解。

    Java代码   收藏代码
    1. String str = "hello";  
    2. String salt = "123";  
    3. String md5 = new Md5Hash(str, salt).toString();//还可以转换为 toBase64()/toHex()   

    如上代码通过盐“123”MD5散列“hello”。另外散列时还可以指定散列次数,如2次表示:md5(md5(str)):“new Md5Hash(str, salt, 2).toString()”。

      

    Java代码   收藏代码
    1. String str = "hello";  
    2. String salt = "123";  
    3. String sha1 = new Sha256Hash(str, salt).toString();   

    使用SHA256算法生成相应的散列数据,另外还有如SHA1、SHA512算法。     

     

    Shiro还提供了通用的散列支持:

    Java代码   收藏代码
    1. String str = "hello";  
    2. String salt = "123";  
    3. //内部使用MessageDigest  
    4. String simpleHash = new SimpleHash("SHA-1", str, salt).toString();   

    通过调用SimpleHash时指定散列算法,其内部使用了Java的MessageDigest实现。


    展开全文
  • SHA安全散列算法

    2019-08-20 22:59:08
    文章目录前言SHA 安全散列算法SHA家族SHA1SHA256SHA384、SHA512安全性Java 中的 SHA使用 commons-codec代码举例Java结果-使用16进制展示 前言 体能状态先于精神状态,习惯先于决心,聚焦先于喜好。 SHA 安全散列...
  • MD5散列算法

    千次阅读 2018-04-18 17:07:39
    MD5散列算法
  • 密码散列算法

    2020-07-28 11:54:11
    密码散列算法是password扩展,他是PHP核心的一部分,不需要单独安装 这个库是专门对密码做hash运算与校验的。 大家都知道,用户注册设置的密码需要存储在数据库,很多老项目都是把密码就行md5运算然后存储到...
  • hash算法散列算法

    2018-02-07 17:04:00
    Hash,一般翻译做“散列”,也有直接音译为“哈希”的,就是把任意长度的输入(又叫做预映射, pre-image),通过散列算法,变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,散列值的空间...
  • 散列函数之双重散列算法解决冲突问题
  • 基于安全散列算法的FPGA加密方法.pdf
  • 安全散列算法的FPGA实现与仿真.pdf

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 105,980
精华内容 42,392
关键字:

散列算法