当您点开这个文章的时候,想要看一下我的总结,不妨看一下别人写的吧。基本上都是翻译视频中的所有信息。地址为:https://blog.csdn.net/u013991521/article/category/5787377
1.加密:把明文(也就是大部分人能看懂的字符)转换成同位数的操作。可能不是那么的确定,但是,这个是我的理解。
2.加密的方式:
- Base64,最基础的,能加密也能解密
- 消息摘要:MD5,只能加密(网上有一些能MD5解密的工具,很抱歉,他们并不能正确的解密出来。)
- 对称加密
- 非对称加密
- 数字签名
3.部分名词解释:
- 密码分析:截获密文者试图通过分析截获密文,从而推断出明文或密钥。
- 主动攻击:攻击者非法侵入密码系统,采用伪造,修改,删除等手段向系统注入假消息进行欺骗。(对密文具有破坏作用)
- 被动攻击:对一个密保系统采取截获密文并对其进行分析或攻击
- 密码体制:由明文空间,密文空间,密钥空间,加密算法,解密算法 五部分构成。
- 密码协议:也成安全协议,指以密码学为基础的消息转换的通信协议,目的是在网络环境中提供安全服务。
- 密码系统:指用于加密跟解密的系统
- 柯克霍夫原则:数据的安全基于密钥而不是算法的保密。即系统的安全取决于密钥,对密钥保密,对算法公开。(现代密码学的基本原则)
4.密码的分类:
- 以时间分类:
- 古典密码:以字符为基本单元
- 现代密码:以信息块(多个字符)为基本的加密单元
- 以保密内容分类:
- 受限制算法:算法的保密基于对算法的保密,属于古典密码,用于军事领域
- 基于密钥算法:算法的保密性基于对密钥的保密,属于现在密码,基于柯克霍夫原则设计的密码。
- 以密码体制分类:
- 对称密码:又称单钥密码或私钥密码,指加密密码与解密密码相同。(DES,3DES,TDEA,Blowfish,RC5,IDEA,AES)
- 非对称密码:又称双钥密码或公钥密码,指加密密钥与解密密钥不同,密钥分为公钥(对外公开),私钥(保密的)(RSA,Elgamal,背包算法,Rabin,DH,Ecc)
- 对称加密算法:又称单钥密码算法或私钥密码算法,指应用于对称密码的加密,解密算法。
- 非对称密码算法:又称双钥密码算法或公开密码算法,指对应于非对称密码的加密,解密算法
- 哈希算符:将任意长度的输入通过算法计算出相同长度的固定输出,且保证输入变化一点输出都不同,且不能反向解密(MD家族 SHA-1)
- base64不是加密算法,是一种编码方式,由于加密后都是byt[]
- md5也不是算法,是消息摘要算法的第五版,是一种哈希算法(但是一般也所示加密算法)
- 以明文处理方法分类:
- 分组密码:指加密时将名分成固定长度的组,用同一密钥和算法对一块加密,输出也是固定长度的密文。多用于网络加密。
- 流密码:也称序列密码,指加密时,每次加密一位或者一个字节明文。
5.散列函数
- 功能:散列函数用来验证数据的完整性
- 特点:
- 长度不受限制
- 哈希值容易计算
- 散列运算过程不可逆
- 相关算法:
- 消息摘要算法:MD5等
- SHA--安全散列算法
- MAC--消息认证算法
6.数字签名:主要针对以数字的形式存储的消息进行的处理。
7.OSI安全体系:
- 网络通讯七层通讯协议
- 物理层
- 数据链路
- 网络层
- 传输层
- 会话层
- 表示层
- 应用层
- 通信协议对应的安全机制
- 加密机制
- 数字签名机制
- 访问控制机制
- 数据完整性机制
- 认证机制
- 业务流填充机制
- 公正机制
- 通信协议对应的安全服务
- 认证(鉴别)服务:指的是整个网络交互过程中,对于接收方和发送方的身份以及数据来源的验证
- 访问控制服务:防止没有授权的用户来非法访问资源(如一个系统需要这个系统的用户才能登录,那么不是这个系统的用户就不能登录)
- 数据保密性服务:确保数据安全有效,也就是说防止数据在传输过程中不被泄露和篡改
- 数据完整性服务:保证数据在传输过程中是原样传输的,没有被任何人或者是第三方的机器去改变它原有的数据的内容
- 抗否认性服务器:防止发送和接受双方在执行各自操作的时候否认自己的操作(比如说用户干了一件事,但是不承认自己做的)
- 安全服务于安全机制的对应关系;
- 安全服务:安全机制
- 抗否认性服务:公正机制
- 数据完整性服务:数据完整机制
- 数据保密性服务:加密机制+填充机制
- 访问控制服务:访问控制机制+路由控制机制
- 认证(鉴别)服务:认证机制+签名机制
- java安全组成:
- JCA(Java Cryptography Architecture):java加密体系结构。提供基本加密框架(如:消息摘要,数字签名)
- JCE(Java Cryptography Extension):java加密扩展包。再JCA的基础上扩展,提供了更多的加密算法(如:DES,AES,RS算法),主要在jdk的一些包中。
- JSSE(Java secoure Socket Extension)java安全套接词的扩展包。提供基于SSL的加密功能,主要用于网络传输。
- JAAS(Java Authentication and Authentication Service):java鉴别与安全服务。提供了再java这个平台上进行用户身份验证的功能(也就是人们常说的基于java来开发的系统权限或者安全)
- JCA与JCE这两部分是java这个平台提供的一些用于安全与加密的API,他们只是提供了算法的一些接口。
- java加密的三种方式:
- JDK自带的:这种方式是用于JDK本身提供的各种API,然后进行相应个操作。
- Bouncy CastleL:另外一种,同样提供了各种算法的实现,但是与JDK不相同,结果相同。应用操作不同。
- Commons Codec:基于JDK进行了一些封装,不再需要些繁杂的多不操作。
- java相关的包跟类:
- java.security包:通过这个包中的实现仅仅能够完成消息摘要算法。
- java.crypto包:主要用于安全消息摘要,消息认证(鉴别)码。通过这个包为我们提供了加解密所需要的包跟类。我们可以完整的实现一套加解密的算法以及这种安全摘要算法。
- java.net.ssl包:安全套接词。这个包主要适合一些网络传输相关的一些加解密操作,如HTTPURLConnection,SSLcontext。