java 加密的一些概念(慕课网视频总结,仅对于自己梳理知识)

当您点开这个文章的时候,想要看一下我的总结,不妨看一下别人写的吧。基本上都是翻译视频中的所有信息。地址为:https://blog.csdn.net/u013991521/article/category/5787377

1.加密:把明文(也就是大部分人能看懂的字符)转换成同位数的操作。可能不是那么的确定,但是,这个是我的理解。

2.加密的方式:

  • Base64,最基础的,能加密也能解密
  • 消息摘要:MD5,只能加密(网上有一些能MD5解密的工具,很抱歉,他们并不能正确的解密出来。)
  • 对称加密
  • 非对称加密
  • 数字签名

3.部分名词解释:

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

4.密码的分类:

  1. 以时间分类:
    1. 古典密码:以字符为基本单元
    2. 现代密码:以信息块(多个字符)为基本的加密单元
  2. 以保密内容分类:
    1. 受限制算法:算法的保密基于对算法的保密,属于古典密码,用于军事领域
    2. 基于密钥算法:算法的保密性基于对密钥的保密,属于现在密码,基于柯克霍夫原则设计的密码。
  3. 以密码体制分类:
    1. 对称密码:又称单钥密码或私钥密码,指加密密码与解密密码相同。(DES,3DES,TDEA,Blowfish,RC5,IDEA,AES
    2. 非对称密码:又称双钥密码或公钥密码,指加密密钥与解密密钥不同,密钥分为公钥(对外公开),私钥(保密的)(RSA,Elgamal,背包算法,Rabin,DH,Ecc)
    3. 对称加密算法:又称单钥密码算法或私钥密码算法,指应用于对称密码的加密,解密算法。
    4. 非对称密码算法:又称双钥密码算法或公开密码算法,指对应于非对称密码的加密,解密算法
    5. 哈希算符:将任意长度的输入通过算法计算出相同长度的固定输出,且保证输入变化一点输出都不同,且不能反向解密(MD家族 SHA-1)
    6. base64不是加密算法,是一种编码方式,由于加密后都是byt[]
    7. md5也不是算法,是消息摘要算法的第五版,是一种哈希算法(但是一般也所示加密算法)
  4. 以明文处理方法分类:
    1. 分组密码:指加密时将名分成固定长度的组,用同一密钥和算法对一块加密,输出也是固定长度的密文。多用于网络加密。
    2. 流密码:也称序列密码,指加密时,每次加密一位或者一个字节明文。

5.散列函数

  1. 功能:散列函数用来验证数据的完整性
  2. 特点:
    1. 长度不受限制
    2. 哈希值容易计算
    3. 散列运算过程不可逆
  3. 相关算法:
    1. 消息摘要算法:MD5等
    2. SHA--安全散列算法
    3. MAC--消息认证算法

6.数字签名:主要针对以数字的形式存储的消息进行的处理。

7.OSI安全体系:

  1. 网络通讯七层通讯协议
    1. 物理层
    2. 数据链路
    3. 网络层
    4. 传输层
    5. 会话层
    6. 表示层
    7. 应用层
  2. 通信协议对应的安全机制
    1. 加密机制
    2. 数字签名机制
    3. 访问控制机制
    4. 数据完整性机制
    5. 认证机制
    6. 业务流填充机制
    7. 公正机制
  3. 通信协议对应的安全服务
    1. 认证(鉴别)服务:指的是整个网络交互过程中,对于接收方和发送方的身份以及数据来源的验证
    2. 访问控制服务:防止没有授权的用户来非法访问资源(如一个系统需要这个系统的用户才能登录,那么不是这个系统的用户就不能登录)
    3. 数据保密性服务:确保数据安全有效,也就是说防止数据在传输过程中不被泄露和篡改
    4. 数据完整性服务:保证数据在传输过程中是原样传输的,没有被任何人或者是第三方的机器去改变它原有的数据的内容
    5. 抗否认性服务器:防止发送和接受双方在执行各自操作的时候否认自己的操作(比如说用户干了一件事,但是不承认自己做的)
  4. 安全服务于安全机制的对应关系;
    1. 安全服务:安全机制
    2. 抗否认性服务:公正机制
    3. 数据完整性服务:数据完整机制
    4. 数据保密性服务:加密机制+填充机制
    5. 访问控制服务:访问控制机制+路由控制机制
    6. 认证(鉴别)服务:认证机制+签名机制
  5. java安全组成:
    1. JCA(Java Cryptography Architecture):java加密体系结构。提供基本加密框架(如:消息摘要,数字签名)
    2. JCE(Java Cryptography Extension):java加密扩展包。再JCA的基础上扩展,提供了更多的加密算法(如:DES,AES,RS算法),主要在jdk的一些包中。
    3. JSSE(Java secoure Socket Extension)java安全套接词的扩展包。提供基于SSL的加密功能,主要用于网络传输。
    4. JAAS(Java Authentication and Authentication Service):java鉴别与安全服务。提供了再java这个平台上进行用户身份验证的功能(也就是人们常说的基于java来开发的系统权限或者安全)
    5. JCA与JCE这两部分是java这个平台提供的一些用于安全与加密的API,他们只是提供了算法的一些接口。
  6. java加密的三种方式:
    1. JDK自带的:这种方式是用于JDK本身提供的各种API,然后进行相应个操作。
    2. Bouncy CastleL:另外一种,同样提供了各种算法的实现,但是与JDK不相同,结果相同。应用操作不同。
    3. Commons Codec:基于JDK进行了一些封装,不再需要些繁杂的多不操作。
  7. java相关的包跟类:
    1. java.security包:通过这个包中的实现仅仅能够完成消息摘要算法。
    2. java.crypto包:主要用于安全消息摘要,消息认证(鉴别)码。通过这个包为我们提供了加解密所需要的包跟类。我们可以完整的实现一套加解密的算法以及这种安全摘要算法。
    3. java.net.ssl包:安全套接词。这个包主要适合一些网络传输相关的一些加解密操作,如HTTPURLConnection,SSLcontext。

 

你可能感兴趣的:(java加密)