java加密解密

java加密解密

  • 安全和密码
  • 常用安全体系介绍
  • 密码分类及java的安全组成
  • JDK相关包及第三方扩展
  • Base64算法

密码常用术语

  • 明文:待加密信息
  • 密文:经过加密后的明文
  • 加密:明文转为密文的过程
  • 加密算法:明文转为密文的转换算法
  • 解密:将密文转为明文的过程
  • 解密算法:密文转为明文的算法
  • 解密密钥:通过解密算法进行解密操作用的密钥
  • 密码分析:截获密文者试图通过分析截获的密文从而推断出原来的明文或者密钥的过程
  • 主动攻击:攻击者非法入侵密码系统,采用伪造,修改,删除等手段向系统注入假消息进行欺骗(对密文具有破坏作用)
  • 被动攻击:对一个保密系统采取截获密文并对其进行分析和攻击(对密文没有破坏作用)
  • 密码体制:由明文空间,密文空间,密钥空间,加密算法和解密算法五部分构成
  • 密码协议:也称为安全协议,指以密码学为基础的消息交换的通信协议,目的是在网络环境中提供安全的服务
  • 密码系统:指用于加密,解密的系统
  • 科克霍夫原则:数据的安全基于密钥而不是算法的保密,即系统的安全取决于密钥,对密钥保密,对算法公开–现代密码学设计的基本原则

##加解密基础

  • 密码分类

    • 时间
      • 古典密码:以字符为基本加密单元
      • 现代密码:以信息块为基本加密单元
    • 保密内容算法
      |名称|详细说明|应用领域|类别|
      |:–|:–|:–|:–|
      |受限制算法|算法的保密性基于保持算法的秘密|军师领域|古典密码|
      |基于密钥算法|算法的保密性基于对密钥的保密||现代密码|

    • 密码体制
      |名称|别名|详细说明|
      |:–|:–|:–|
      |对称密码|单钥秘密或私钥密码|指加密密钥与解密密钥相同|
      |非对称密码|双钥密码或公钥密码|指加密密钥与解密密钥不同,密钥分公钥,私钥|
      |对称密码算法|单钥密码算法或私钥密码算法|指应用于对称密码的加密,解密算法|
      |非对称密码算法|双钥密码算法或公钥密码|只对应非对称密码的加密,解密算法|

    • 明文处理方法

      • 分组密码:指加密时将名为分成固定长度的组,用同一密钥和算法对每一块加密,输出也是固定长度的密文,多用于网络加密.
      • 流密码:也称为序列密码.指加密时每次加密一位或者一个字节明文
    • 散列函数
      • 用来验证数据的完整性
      • 长度不受限制
      • 哈希值容易计算
      • 散列运算过程不可逆
      • 算法:
        • 消息摘要算法MD5
        • SHA–安全散列算法
        • MAC–消息认证码算法(MAC–苹果操作系统)
    • 数字签名
      • 主要是针对以数字的形式存储的消息进行的处理

OSI安全体系

OSI(Open System Interconnection)

网络通信
7.应用层
6.表示层
5.会话层
4.传输层
3.网络层
2.数据链路层
1.物理层
安全机制
加密机制
数字签名机制
访问控制机制
数据完整性机制
认证机制
业务流填充机制
路由控制机制
公证机制
安全服务
认证(鉴别)
访问控制服务
数据保密性服务
数据完整性服务
抗否认性服务

TCP/IP


java安全组成

JCA(Java Cryptography Architectrue)JAVA加密体系。
JCE(Java Cryptography Extension)JAVA加密拓展:DES 、AES 、RSA算法通过JCE提供。
JSSE(Java Secure Socket Extesion)JAVA套接字安全拓展:提供基于SSL的加密功能,主要用于网络传输。
JAAS(Java Authentication and Authentication Service)JAVA鉴别与安全服务。


  • 相关java包,类
    java.security
    • 消息摘要
      javax.crypto
  • 安全消息摘要,消息认证(鉴别)码
    java.net.ssl
  • 安全套接字

  • 第三方java扩展
    Bouncy Castle
  • 两种支持方案:1)配置;2)调用

Commons Codec

  • Apache
  • Base64,二进制,十六进制,字符集编码
  • Url编码/解码