java加密与解密

178 阅读3分钟

为什么需要密码学?IT为何不在通讯协议中,设计好加密交互机制,可以省掉很多麻烦。

OSI参考模型在原有网络通信七层结构的基础上构建了OSI安全体系结构,它由五类安全服务和八类安全机制构成。其中,五类安全服务以安全技术目标为主旨,包括认知(鉴别)服务、访问控制服务、数据保密性服务、数据完整性服务和抗否认性服务;八类安全机制对五类安全服务做了详尽的补充,包括加密机制、数字签名机制、访问控制机制、数据完整性机制、认证机制、业务流填充机制、路由控制机制和公证机制。

随着卫星和无线网络的出现,原有OSI参考模式已不能应对这些网络的安全问题,此时TCP/IP出现了,但是安全问题也随即突出。为了解决这些安全问题,TCP/IP安全体系结构诞生了,包括网络接口层安全、网络层安全、传输层安全和应用层安全思想内容。其中,网络接口层安全和网络层安全依靠物理硬件来完成,传输层安全和应用层安全通过SSL/TLS+HTTP协议来完成。

点评:一是:卫星和无线网络的出现,脱离标准;二是:有很多服务不需要加密,比如:对外展示的博客文章等等

密码学的发展

手动加密阶段、机械加密阶段和计算机加密阶段

古典密码

古典密码是现代密码的基础,移位和替代是古典密码最长用,最核心的两种加密技巧

加密算法种类

单向加密算法:数据完整性验证的常用算法;MD5、SHA算法; 对称加密算法:数据存在加密的常用算法;DES算法; 非对称加密算法:数据传输加密的常用算法;RSA

对称密码体制:分为两种

流密码:一种是对明文的单个位(或字节)进行加密和解密 分组密码:另一种是把明文信息华为不同的组(或块)结构,分别对每个组(或块)进行加密和解密。

  • DES、AES算法等主要的对称密码算法均为分组密码。 分组密码共有5种工作模式:
  1. 电子密码本模式(ECB)
  2. 密文链接模式(CBC)
  3. 密文反馈模式(CFB)
  4. 输出反馈模式(OFB)
  5. 计数器(CTR)。 分组密码会产生短块,关于短块的处理方法有填充法,流密码加密法、密文挪用技术。

非对称密码体制

非对称密码体制的加密秘钥和解密秘钥不相同,分为两个秘钥,一个公开,一个保密。公开的密钥为公钥,保密的密钥为私钥。

JDK涉及的加密解密概念:

安全提供这实现了两个概念的抽象:引擎和算法、 引擎可以理解为操作,比如:加密、解密等。 算法则定义了操作如何执行,如一个算法可以理解为引擎的具体实现。

点评:引擎:饭勺;算法:可能是电饭锅、铁锅、电磁炉等等

JDK8与加密相关的jar包和目录:

  • JCE提供各种加密算法、消息摘要算法和密钥关联等功能。有关JCE的实现主要在javax.crypto包(及其子包)中。
  • JSSE提供与基于SSL(Secure Sockets Layer,安全套接字层)的加密功能,在网络的传输过程中,信息会经过多个主机(很有可能其中一台就被窃听),最终传给接收者,最终传送给接收者,这是不安全的。这种确保网络通信安全的服务就是由JSSE来提供的。
  • java.security包为安全框架提供类和接口;
  • java.crypto包为加密操作提供类与接口。