安全之加密算法
一、加密概述
1.为什么需要加密?
-
前端存储需避免直接明文保存敏感信息,如用户个人信息、权限标识及身份令牌等,以确保数据在客户端的安全性。
-
线上环境的数据传输存在潜在风险,网络通信可能被拦截或窃取,导致用户敏感信息泄露。需通过加密技术保障传输数据的机密性,防止恶意攻击者获取平台用户数据。
-
许多行业法规(如GDPR、HIPAA)要求对特定数据进行加密。未加密可能导致法律处罚或声誉损失。
-
核心目标为在数据存储与传输环节确保机密性、完整性和可用性,防范敏感信息被非法访问、篡改或滥用,同时符合监管合规要求并建立用户对系统的信任基础。
2.加密算法的常用术语
- 明文/密文
- 明文:加密之前的内容,原始内容
- 密文:加密之后的内容
- 暗文:看不见 - 输入密码
- 公钥/私钥
- 公钥:可见的公共的钥匙
- 私钥:不可见的私有的钥匙
- 可逆/不可逆
- 可逆:加密之后可解密
- 不可逆:加密之后不可解密
- 对称/非对称
- 对称:使用同一个密钥进行数据的加密解密
- 非对称:加密与解密使用不同的密钥,公钥与私钥
- 数字签名:加密方第二次加密叫做数字签名
- 签名认证:解密方第一次解密叫做签名认证
- 盐值(Salt): 随机数据,与密码结合后再哈希,防止彩虹表攻击。常用于密码存储。
3.秘密等级
秘密等级通常用于政府、军事或企业文件,根据信息的敏感性和潜在危害程度划分。
- 绝密(Top Secret):最高级别,泄露可能导致国家安全或利益遭受特别严重损害。
- 机密(Secret):次高级别,泄露可能导致严重损害。
- 秘密(Confidential):基础级别,泄露可能导致一般性损害。
- 内部(Restricted):非公开信息,但未达到秘密级别。
不同国家的秘密等级差异
- 美国:采用三级分类(Top Secret/Secret/Confidential),并附加"SCI"(敏感隔离信息)等子类。
- 中国:依据《保守国家秘密法》分为绝密、机密、秘密三级,明确标注保密期限和解密条件。
- 欧盟:部分国家使用"EU Confidential"等统一标准,但成员国可能保留本国分级制度。
接下来计算常用的加密算法
二、加密算法
1.消息认证码算法
特征 :用于验证消息的完整性和真实性,防止数据被篡改
实现 :HMAC-SHA256、OMAC、UMAC、CBC-MAC、PMAC、VMAC[Message Authentication Code]
作用:用于验证消息的完整性和真实性,防止数据被篡改
2.不可逆加密算法
不可逆加密算法通常指哈希算法,但二者并非完全等同。哈希算法是单向函数,设计初衷是确保数据无法逆向还原,常用于数据完整性验证和密码存储。传统加密算法(如AES、RSA)通常是可逆的,需要密钥解密。
特征 :只能加密不能解密
技术 :MD5、SHA-256、SHA-3
作用 :一般对登录密码处理,用于做密码比对
问题:只能加密,不能解密,不能用来对网络中传输的数据进行加密
哈希函数,也叫散列函数,把任意长度的数据,变成固定长度的"指纹"。
常见的哈希算法:
- SHA-256、SHA-3:区块链、数据完整性校验,用得最多。
- MD5、SHA-1:老掉牙了,安全性不行,别用了!除非你真的没办法。
MD5一些网站可以几秒钟的破解,尽量给个盐
应用:
- 数据完整性校验:下载文件后,算个哈希值,和官方提供的比对一下,
- 就知道有没有被动过手脚。
- 密码存储:别直接存明文密码!哈希一下,再加个盐,安全多了。
- 数字签名:先对数据哈希,再对哈希值签名,提高效率。
3.可逆对称加密算法
特征:
- 可以加密,也可以解密
- 加密和解密的密钥是同一个,网络可以拦截到密钥
实现 :DES,AES
作用 :对数据库密码进行加密
缺点:速度快,适合大量数据加密,但密钥分发是个问题。
算法:
- 密文为s,加解密算法为AES,秘钥为k,明文为c
- 加密:s = AES(k,c)
- 解密:c = AES(k,s)
应用:
- 数据传输安全:SSL/TLS协议在握手阶段使用对称加
- 文件与磁盘加密: BitLocker、FileVault等工具使用AES算法加密整个磁盘或分区。
- 数据库管理系统(如MySQL、PostgreSQL)支持透明数据加密(TDE)
问题:
- 根据密钥和数据可以解密数据,那么数据不安全
- 网络可以拦截到密钥后根据密钥加密其他数据,伪造数据发送给接收方,数据不安全

4.可逆非对称加密算法
特征:
- 可以加密,也可以解密
- 加密和解密的密钥不是同一个。但是是成对出现的。一个私钥就对应一个公钥。如果使用私钥加密,
只能使用与之对应公钥来解密。反之如果使用公钥加密,只能使用与之对应私钥解密
实现 :RSA,RSA2[支付宝签名采用RSA2算法]
作用 :网络传输中对数据进行加解密
问题:
- 速度比对称加密慢。
- 密钥长度有讲究,太短不安全,太长影响性能。
应用:
- 数字签名与身份验证:私钥签名、公钥验签确保数据完整性和来源真实性,广泛应用于SSL/TLS证书、文档签名等场景。
- 安全协议集成: SSL/TLS:非对称加密用于握手阶段交换密钥,如RSA或ECDHE。
- ECDH(椭圆曲线Diffie-Hellman)等算法通过非对称机制安全协商共享密钥,避免密钥直接传输。
算法:
- 密文为s,加解密算法为RSA私钥为k1,公钥为k2,明文为c
第一组:私钥加密公钥解密
加密:s = rsa(k1,c)
解密:c = rsa(k2,s)
第二组:公钥加密私钥解密
加密:s = rsa(k2,c)
解密:c = rsa(k1,s)
注意:
- RSA可以只加密一次,但是加密一次不安全,因为可以被伪造
- 真正的RSA要加密两次,解密两次,第一次加密和解密并不是真正的数据,而是数字签名和签名认证/确认身份
加密一次 :
加密二次 :都是先通过自己的公钥加解密,然后再通过对象的私钥加解密

小结:
本文粗浅介绍了各大加密算法几大类型,不可逆加密(如SHA-256)适用于密码存储和完整性校验,需结合盐值提升安全性;对称加密(如AES)效率高但需解决密钥分发问题;非对称加密(如RSA)通过公私钥机制实现安全通信,但性能较低。实际应用中常采用混合策略,例如TLS协议结合非对称加密交换密钥,再切换至对称加密传输数据。
关键点
- 哈希算法:单向性设计确保密码存储安全,需避免使用MD5等弱算法。
- 对称加密:适合处理大量数据,但密钥管理需通过安全信道或密钥派生技术。
- 非对称加密:解决密钥交换问题,支持数字签名和身份认证。
- 合规性:根据不同场景选择符合行业标准(如FIPS 140-2)的算法实现。
文章结束,写作不易,喜欢就给个一键三连吧,你的肯定是我最大的动力,点赞上一千我就是脑瘫也出下章。