密码学系列之:NIST和SHA算法】的更多相关文章

目录 简介 SHA1 SHA2 SHA3 简介 SHA算法大家应该都很熟悉了,它是一个用来计算hash的算法,目前的SHA算法有SHA1,SHA2和SHA3种.这三种算法都是由美国NIST制定的. NIST的全称是美国国家标准与技术研究所,主要来制定各种标准. 本文将会讲解下NIST和SHA各种算法的关系. SHA1 在密码学中,SHA-1(Secure Hash Algorithm 1)是一种加密哈希函数,它接受一个输入,并产生一个160位(20字节)的哈希值,称为信息摘要. 我们先看下SHA…
密码学系列之:memory-hard函数 目录 简介 为什么需要MHF Memory hard的评估方法 MHF的种类 MHF的密码学意义 memory-hard在MHF中的应用 简介 Memory hard function简称为MHF,在密码学中,内存困难函数(MHF)是一个需要花费大量内存来完成的函数.MHF主要被用在工作量证明中.因为需要花费大量的内存,所以MHF也会被用在密码Hash中,可以防止恶意破解. 和MHF相识的还有一个MBF(memory-bound function ),叫…
密码学系列之:碰撞抵御和碰撞攻击collision attack 简介 hash是密码学和平时的程序中经常会用到的一个功能,如果hash算法设计的不好,会产生hash碰撞,甚至产生碰撞攻击. 今天和大家详细探讨一下碰撞攻击. 什么是碰撞攻击 所谓碰撞攻击指的是对于同一个hash函数来说,两个不同的input通过hash计算得到了同样的hash值.用公式来说就是: hash(m1) = hash(m2) 这个攻击有什么作用呢? 举个例子,通常我们通过网络下载应用程序或者软件,除了下载链接之外,还会…
密码学系列之:feistel cipher 简介 feistel cipher也叫做Luby–Rackoff分组密码,是用来构建分组加密算法的对称结构.它是由德籍密码学家Horst Feistel在IBM工作的时候发明的.feistel cipher也被称为Feistel网络. 很多分组加密算法都是在feistel cipher的基础上发展起来的,比如非常有名的DES算法. 在feistel cipher中,加密和解密的操作非常相似,通常需要进行多轮加密和解密操作. Feistel网络的原理 F…
密码学系列之:memory-bound函数 目录 简介 内存函数 内存受限函数 内存受限函数的使用 简介 memory-bound函数可以称为内存受限函数,它是指完成给定计算问题的时间主要取决于保存工作数据所需的内存量.和之相对应的就是计算受限compute-bound的函数,在计算受限的函数中,计算所需要的计算步骤是其决定因素. 本文将会介绍一下内存受限函数和它跟内存函数的关系. 内存函数 内存函数和内存受限函数看名字好像很类似,其实他们的作用是不同的,我们先来看下内存函数. 在学习算法中,有…
密码学系列之:Merkle–Damgård结构和长度延展攻击 简介 Merkle–Damgård结构简称为MD结构,主要用在hash算法中抵御碰撞攻击.这个结构是一些优秀的hash算法,比如MD5,SHA-1和SHA-2的基础.今天给大家讲解一下这个MD结构和对他进行的长度延展攻击. MD结构 MD结构是Ralph Merkle在1979年的博士论文中描述的.因为Ralph Merkle 和 Ivan Damgård 分别证明了这个结构的合理性,所以这个结构被称为Merkle–Damgård结构…
目录 简介 密钥推导函数key derivation function Password Hashing Competition Argon2算法 Argon2的输入参数 处理流程 简介 Argon2是一个密钥推导函数,在2015年7月被选为密码哈希大赛的冠军,它由卢森堡大学的Alex Biryukov.Daniel Dinu和Dmitry Khovratovich设计,Argon2的实现通常是以Creative Commons CC0许可(即公共领域)或Apache License 2.0发布…
分布式理论系列(二)一致性算法:2PC 到 3PC 到 Paxos 到 Raft 到 Zab 本文介绍一致性算法: 2PC 到 3PC 到 Paxos 到 Raft 到 Zab 两类一致性算法(操作原子性与副本一致性) 2PC 3PC 协议用于保证属于多个数据分片上的操作的原子性.这些数据分片可能分布在不同的服务器上,2PC 协议保证多台服务器上的操作要么全部成功,要么全部失败. Paxos Raft Zab 协议用于保证同一个数据分片的多个副本之间的数据一致性.当这些副本分布到不同的数据中心时…
byte[] input="sha".getBytes();//待做消息摘要算法的原始信息,可以是任意字符串 MessageDigest sha=MessageDigest.getInstance("SHA");//使用"SHA"算法,构造MessageDigest对象 sha.update(input);//更新摘要信息 byte[] output=sha.digest();//获取消息摘要结果 SHA--Secure Hash Algorit…
目录 简介 blowfish详解 密钥数组和S-box 密钥数组 S-box 生成最终的K数组 blowfish blowfish的应用 blowfish的缺点 简介 Blowfish是由Bruce Schneier在1993年发明的对称密钥分组加密算法,类似的DES和AES都是分组加密算法,Blowfish是用来替代DES算法出现的,并且Blowfish是没有商用限制的,任何人都可以自由使用. 对比而言,虽然AES也是一种密码强度很高的对称密码算法,但是如果需要商用的话要向NIST支付授权费用…