在java开发中,常常需要考虑数据安全问题,然不仅仅需要考虑数据存储的安全,还需要考虑数据的传输安全。自从有了数据安全问题后,密码学也就出来了。了解数据安全,首先需要了解密码学
1.什么是密码学
密码学是研究编制密码和破译密码的技术科学。研究密码变化的客观规律,应用于编制密码以保守通信秘密的,称为编码学;应用于破译密码以获取通信情报的,称为破译学,总称密码学。
2.密码学中常用的概念
明文:指待加密信息。明文可以是2进制数据,文本文件,图片文件等。
密文:指经过加密后的明文。密文可以使2进制数据,文本文件,图片文件等。
发送者:发送消息的人。
接收者:接收消息的人。
加密:明文转换为密文的过程。
加密算法:将明文变化为密文的转换算法。
加密密匙:通过加密算法进行加密操作作用的密匙。
解密:将密文转换为明文的过程。
解密算法:将密文转换为明文的转换算法。
解密密匙:通过解密算法进行解密操作用的密匙。
密码分析:截取密文者试图通过分析截获的密文从而推断出原密文或密匙的过程。
密码分析者:等同于密码破译者,指从事密码分析的人。
被动攻击:指对一个保密系统采取截获密文并对其进行分析和攻击。这种攻击对密文没有破坏作用。
主动攻击:指攻击者非法入侵密码系统,采用伪造,修改,删除等手段向系统注入假消息进行欺骗。这种攻击对密文具有破坏作用。
密码*:由明文空间、密文空间、密匙空间、加密算法和解密算法五部分构成。
密码协议:有时候也称为安全协议,是指以密码学为基础的消息交换的通信协议,其目的是在网络环境中提供各种安全服务。
密码系统:用于加密与解密的系统,通常包含软、硬件的系统。
柯克霍夫原则:数据的安全基于密匙而不是算法的保密。
3.密码学的分类
1.按时间划分,可分为古典密码与现代密码,古典密码为以字符为基本单元进行加密
2.按保密内容划分,可分为受限制算法与基于密匙算法
3.按密码*划分,可分为对称密码*、非对称密码*
4.按明文处理方法划分,可分为分组密码与流密码
4.保密通信模型
密码学并不是孤立存在,废话,呵呵。它需要一个环境,就是保密通信模型。密码学的目的在于确保信息的保密传送。
保密通信模型:
对称密码*模型:
从中可以看出加密与解密的密匙是一模一样的,也就是对称密码*加解密算法密匙是一样的。
非对称密码*:
与对称密码*比较就是加解密算法与密匙均不同。