Part 01 什么是加密算法 加密算法是一种密码学算法,就是指将信息变成密文的加密技术,加密算法可以实现对数据所属方的隐私保护 , 并在保护隐私的前提下 , 实现数据的匿踪共享 。通过加密算法可以达到:数据保密性,防止用户数据被窃取或泄露; 数据完整性,防止用户传输的数据被篡改;通信双方身份确认,确保数据来源合法的功能 。
常见加密算法分为不可逆算法和可逆算法,其中可逆算法分为对称加密和非对称加密算法,整体加密算法分类如图1所示 。
文章插图
Part 02 不可逆算法 【浅谈加密算法】不可逆算法的加密是不可逆的,加密后的密文是无法被还原成原文 。其中散列算法 , 就是一种不可逆算法 。
散列算法是指明文通过散列算法生成散列值,散列值是长度固定的数据,和明文长度无关,算法过程如图2所示 。常见散列算法的具体实现有很多种 , 例如MD5、SHA1、SHA-224、SHA-256等等 。散列算法是不需要密钥的,当然也存在一些其他不可逆算法是需要密钥的,例如Hmac算法 。
文章插图
图 2
1、MD5,全称为“Message-Digest Algorithm 5”,翻译过来叫“信息摘要算法” 。它可以将任意长度的数据通过散列算法,生成一个固定长度的散列值 。MD5算法的输出长度为128位,通常用32个16进制数表示 。MD5有一些优点,比如计算速度快、输出长度固定、应用广泛等等 。但是作为一个加密算法,它有一个天大的缺点,那就是不安全 。目前MD5算法已经被攻破,而且MD5算法的输出长度有限,攻击者可以通过暴力破解或彩虹表攻击等方式,找到与原始数据相同的散列值,从而破解数据 。虽然可以通过加盐 , 也就是对在原文里再加上一些不固定的字符串来缓解,但是完全可以用更安全的SHA系列算法替代 。
2、SHA(Secure Hash Algorithm)系列算法是一组密码散列函数 , 用于将任意长度的数据映射为固定长度的散列值 。SHA系列算法由美国国家安全局(NSA)于1993年设计,目前共有SHA-1、SHA-2、SHA-3三种版本 。其中SHA-1系列存在缺陷,已经不再被推荐使用 。SHA-2算法包括SHA-224、SHA-256、SHA-384和SHA-512四种散列函数,分别将任意长度的数据映射为224位、256位、384位和512位的散列值 。
3、上述两种算法,SHA-2算法比MD5强,主要有两个原因:
(1)散列值长度更长:例如SHA-256算法的散列值长度为256位,而MD5算法的散列值长度为128位,这就提高了攻击者暴力破解或者彩虹表攻击的难度 。
(2)更强的碰撞抗性:SHA算法采用了更复杂的运算过程和更多的轮次,使得攻击者更难以通过预计算或巧合找到碰撞 。
Part 03 可逆算法 可逆算法分为对称加密算法和非对称加密算法两种 。
对称加密算法
对称加密算法的加密和解密过程使用的是相同的密钥,因此密钥的安全性至关重要 。如果密钥泄露,攻击者可以轻易地破解加密数据 。
对称加密的原理如图3所示,通信的双方约定好使用统一的加密解密算法 , 以及一个salt盐作为唯一标识,发送数据前先试用加密算法和salt经过加密函数处理得到密文 , 接受方收到密文后使用解密算法+salt对密文解密得到明文再处理 。
文章插图
常见的对称加密算法包括DES、3DES、AES等 。其中,AES算法是目前使用最广泛的对称加密算法之一 , 具有比较高的安全性和加密效率 。
(1)AES(Advanced Encryption Standard)即高级加密标准,是一种对称加密算法,被广泛应用于数据加密和保护领域 。AES算法使用的密钥长度为128位、192位或256位,比DES算法的密钥长度更长,安全性更高 。AES算法采用的密钥长度更长,密钥空间更大,安全性更高,能够有效地抵抗暴力破解攻击 。当然,因为密钥长度较长,需要的存储也更多 。
(2)DES(Data Encryption Standard)算法是最早的一种广泛应用的对称加密算法之一 。DES算法使用56位密钥对数据进行加密,加密过程中使用了置换、替换、异或等运算,具有较高的安全性 。速度较快 , 但是在安全性上面并不是最优选择,因为DES算法的密钥长度比较短,被暴力破解和差分攻击的风险比较高,一般推荐用一些更安全的对称加密算法,比如3DES、AES等 。
推荐阅读
- 浅谈HBase数据结构和系统架构
- 微软斯坦福新算法,杜绝AI灭绝人类风险!GPT-4自我迭代,过程可控可解释
- 浅谈分布式事务及解决方案
- 机器学习算法解决实际问题:方法与技巧
- 机器学习算法的优势与局限性探究
- 深度学习算法:从模仿到创造
- 学习Python集成学习和随机森林算法
- 基于牛顿求根法,新算法实现并行训练和评估RNN,带来超10倍增速
- 流行人脸检测与模糊算法,王者究竟是谁?实战揭秘
- 基于RetinaNet框架设计的高效人脸检测算法