JAVA加密算法使用——密码学概述、JAVA相关密码学常用类
编程开发中,安全问题也是值得每个人思考的,所以打算写关于JAVA加密方面的blog,该博客就简单说说密码学的一些基本问题以及概念吧
该篇博客目录
1、密码学四大功能、基本模型
2、密码学算法分类
3、密码学五元组、**与密码区别
4、对称密码与非对称密码区别
5、JAVA相关密码学的常用类
一、密码学四大功能、基本模型
1、四大功能
- 机密性
- 鉴别(发送方和接收方都能鉴别另一方的身份。也就是第三方无法冒充)
- 报文完整性(内容在运输过程没有被改变)
- 不可否认性
2、基本模型
二、密码学算法分类
- 消息编程:Base64
- 消息摘要:MD类、SHA类、MAC(消息验证码,在MD类与SHA类上增加了**的支持)
- 对称密码:DES、3DES、AES(对称密码的标准(最新),增加了**的长度)
- 非对称密码:RSA、DH**交换
- 数字签名:RSASignature(基于RSA)、DSASignature(基于DSA)
三、密码学五元组
- 明文
- 密文
- 加密算法
- 解密算法
- **(安全性依赖于**)
现在基本上加密算法解密算法都是公开的。因为那些被公认为强度大的加密算法才值得使用
说到**,就说说**和密码的区别吧。网上有种解释挺形象的:
比如密码是2,1 4,5
即找到一个对应的密码本,找到在书中的第二页第一个字,和第四页第五个字完成解密。而这本是就是**,几行第几个字这就是规则。所以密码=**+规则
四、对称密码与非对称密码区别
- 对称密码(传统密码):加解密使用相同**的密码体制
- 非对称密码(公钥密码):加解密使用不同的**————公钥和私钥(这里公钥与私钥区别不再阐述)
五、JAVA相关密码学的常用类
1、消息编码
- BASE64Encoder(编码)
- BASE64Decoder(解码)
2、消息摘要
- MessageDigest
3、对称密码
- KeyGenerator(**生成器)
- SecretKey(存储**)
- Cipher(加解密功能)
4、非对称密码
- KeyPairGenerator(**生成器——公钥与私钥)
- KeyFactory(**工厂)
- KeyPair(**对)
- PublicKey(公钥)
- PrivateKey(私钥)
- Cipher(加解密功能)
5、数字签名
- Signature