密码学
密码的分类
-
基于保密算法是否公开
- 受限制算法
- 不公开, 一般用于军方
- 基于密钥算法
- 公开
- 密钥是保密的
- 受限制算法
-
基于明文处理方式
-
分组加密
-
流密码
-
-
WEB安全体系
- - 物联网传话试用
-
比较
Java安全组成
组成
-
JCA(java cryptography architecture)
-
JCE
- DES, AES, RSA
-
JSSE
- SSL(主要网络传输过程中)
-
JAAS
相关包
-
java.security
- 消息摘要
-
javax.crypto
- 安全消息摘要, 消息认证(鉴别码)
-
java.net.ssl
-
安全套接字
-
常用类
- HttpsURLConnection, SSLContext
-
-
扩展
-
java的安全组成一般是基于接口的, 所以可以很方便的扩展
-
扩展方式
-
配置文件方式
-
编码方式
-
-
常用第三方扩展
-
Bouncy Castle
-
Commons Codec
- Base64, 二进制, 十六进制, 字符集编码
- Url编码/解码
-
-
加密算法
Base64
-
应用
- e-mail, 密钥
-
实现
-
JDK实现
-
Commons Codec实现
-
Bouncy Castle实现
-
消息摘要算法
散列函数
-
作用
- 验证数据的完整性, 没有被修改
- 数字签名的核心算法
- 任意长度的数据,算出的MD5值长度都是固定的(128bit,32位十六进制)
- 不可逆
-
特点
- 散列的过程是不可逆的
- 长度不固定
- 哈希值容易计算
-
实现
- MD5: 消息摘要算法
- SHA: 安全散列算法
- MAC: 消息验证码算法
-
全称
-
算法
-
MD5
-
特点
- 128位摘要
- 单项加密
-
-
SHA
-
特点
-
长度固定
-
-
应用
-
-
-
MAC
-
特点
- 含有密钥的散列算法
- 融合MD和SHA
-
应用
- SecureCTR
-
-
-
具体应用
-
密码加盐(用户的密码一般都是需要进行md5加密)
-
算法 Stirng entryPassword = MD5(MD5(password) + salt);
-
固定的盐
- 后台写死, 不是很安全, 容易被暴力破解
-
随机的盐
- 随机生产盐, 每次通过查询数据库查询用户的随机数盐, 前端传过来的也不是密码明文, 而是MD5(password) , 然后在通过查出来的这条数据的盐和MD5(password)再一次做哈希, 即MD5(MD5(password) + salt) 和 数据库里保持的哈希做比较, 相等说明密码正确
-
-
令牌实现
- 双因子认证
- 怎么在Java中利用OTP动态口令实现登录认证 - 编程语言 - 亿速云 (yisu.com)
- [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MaWkHQb8-1657876046702)(…/…/…/思维导图/思维导图关联文件/markdownImg/1652705210747.png)]
- [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-W0JHQuVv-1657876046703)(…/…/…/思维导图/思维导图关联文件/markdownImg/1652705234950.png)]
- 双因子认证
-
对称加密算法
-
实现
-
DES
- [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nzPSMq3z-1657876046704)(…/…/思维导图关联文件/markdownImg/image-20220715162529378.png)]
- [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8I9HBb8I-1657876046706)(…/…/思维导图关联文件/markdownImg/image-20220715162535302.png)]
-
3DES
-
AES
-
-
应用
-
数字签名
-
针对以数字的形式存储的消息处理
-
保证消息的不可抵赖性
证书
应用
- https
- 源码包二进制文件md5
公钥对外公开,私钥对外保密
非对称数字签名应用
速度比较
消息摘要>