单向加密(散列算法)
散列是信息的提炼,通常其长度要比信息小得多,且为一个固定长度。加密性强的散列一定是不可逆的,这就意味着通过散列结果,无法推出任何部分的原始信息。任何输入信息的变化,哪怕仅一位,都将导致散列结果的明显变化,这称之为雪崩效应。散列还应该是防冲突的,即找不出具有相同散列结果的两条信息。具有这些特性的散列结果就可以用于验证信息是否被修改。 单向散列函数一般用于产生消息摘要,密钥加密等,常见的有:
- MD5(Message Digest Algorithm 5):是RSA数据安全公司开发的一种单向散列算法,非可逆,相同的明文产生相同的密文。
- SHA(Secure Hash Algorithm):可以对任意长度的数据运算生成一个160位的数值;
SHA-1与MD5的比较
因为二者均由MD4导出,SHA-1和MD5彼此很相似。相应的,他们的强度和其他特性也是相似,但还有以下几点不同:
- 对强行供给的安全性:最显著和最重要的区别是SHA-1摘要比MD5摘要长32 位。使用强行技术,产生任何一个报文使其摘要等于给定报摘要的难度对MD5是2128数量级的操作,而对SHA-1则是2160数量级的操作。这样,SHA-1对强行攻击有更大的强度。
- 对密码分析的安全性:由于MD5的设计,易受密码分析的攻击,SHA-1显得不易受这样的攻击。
- 速度:在相同的硬件上,SHA-1的运行速度比MD5慢。
特点
- 特征:雪崩效应、定长输出和不可逆。
- 作用是:确保数据的完整性。
- 加密算法:md5(标准密钥长度128位)、sha1(标准密钥长度160位)、md4、CRC-32 sha256 sha512
- 加密工具:md5sum、sha1sum、openssl dgst sha256sum。
- 计算某个文件的hash值,例如:md5sum/shalsum FileName,openssl dgst –md5/-sha1
MurmurHash
MurmurHash 是一种非加密型哈希函数,适用于一般的哈希检索操作
优缺点
- 速度快,比安全散列算法快几十倍
- 变化足够激烈,相似的字符串如“abc”和“abd”能够均匀散落在哈希环上
- 不保证安全性(缺点)
BLAKE2
BLAKE2 提供了与 SHA-3 相媲美的安全性。它具有以下特性:
- 抗碰撞攻击:很难找到两个不同的输入使得它们的哈希值相同。
- 抗预映射攻击:很难找到一个给定哈希值对应的原始输入。
- 抗第二预映射攻击:很难找到与给定输入具有相同哈希值的另一个输入。
Poseidon 算法
Poseidon 是一种现代加密哈希函数,设计用于零知识证明(Zero-Knowledge Proofs, ZKPs)等高级密码学应用。它由研究人员 Benedikt Bunz, Dario Fiore, Iddo Bentov, and Pavel Vasin 等人设计。Poseidon 的设计目标是提供一种高效且安全的哈希算法,特别适合用于 zk-SNARKs 和 zk-STARKs 等 ZKP 系统中。
- 针对零知识证明优化: Poseidon 设计时考虑了在零知识证明系统中的应用,优化了哈希计算的效率,特别是减少了算术电路中的门数量(gate count)。
- 基于加密结构: Poseidon 采用 Sponge 结构,这种结构在密码学中广泛应用于构建哈希函数和伪随机数生成器。Sponge 结构由两个主要阶段组成:吸收(absorb)和挤出(squeeze)。
- 高效性: Poseidon 的设计特别注重计算效率,适合在资源受限的环境中运行,比如区块链中的智能合约或零知识证明的证明生成过程。
- 灵活性: Poseidon 可以根据不同的应用需求进行配置,支持不同的安全参数和性能优化。
- 安全性: Poseidon 提供了较高的安全性,抗碰撞攻击、预映射攻击和第二预映射攻击,满足现代密码学的安全需求。
使用
Redis,Memcached,Cassandra,HBase,Lucene