编程开发中,安全问题也是值得每个人思考的,所以打算写关于JAVA加密方面的blog,该博客就简单说说密码学的一些基本问题以及概念吧

该篇博客目录

1、密码学四大功能、基本模型
2、密码学算法分类
3、密码学五元组、密钥与密码区别
4、对称密码与非对称密码区别
5、JAVA相关密码学的常用类

一、密码学四大功能、基本模型

1、四大功能
  • 机密性
  • 鉴别(发送方和接收方都能鉴别另一方的身份。也就是第三方无法冒充)
  • 报文完整性(内容在运输过程没有被改变)
  • 不可否认性
2、基本模型

java bc库生成密钥对_密码学五元组


二、密码学算法分类

  • 消息编程: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