编程开发中,安全问题也是值得每个人思考的,所以打算写关于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