加密/解密
问题思考
- 为什么需要加密 / 解密?
- 信息泄露可能造成什么影响?
- 案例一:战争情报
- 案例二:破译北斗部分编码?乌龙
加密技术
加密技术是最常用的安全保密手段,利用技术手段把重要的数据变为乱码(加密)传送,到达目的地后再用相同或不同的手段还原(解密)。
加密技术包括两个元素:算法和密钥。算法是将普通的信息或者可以理解的信息与一串数字(密钥)结合,产生不可理解的密文的步骤,密钥是用来对数据进行编码和解密的一种算法。在安全保密中,可通过适当的钥加密技术和管理机制来保证网络的信息通信安全。
- 算法:加密 / 解密所使用的转换规则
- 密钥:加密 / 解密所使用的指令或代码
加密的目的与方式
加密的目的
加密的目的就是为了保护数据在存储状态下和在传输过程中,不被窃取、解读和利用。简单的说:确保数据的机密性和保护信息的完整性
加密的方式:单向散列加密
根据输入长度信息进行散列计算,得到固定长度输出,常用于密码保存,常见的是MD5,SHA等,通常会加盐处理
- 密钥数量 无
- 特点
(1)加密效率高
(2)单方向加密
- 安全性
(1)不安全(相对于对称加密)
- 使用情况
(1)主流的加密方式
加密的方式:对称加密
采用单钥密码系统加密方法,同一个密钥可以同时用作信息的加密和解密。常见有AES
- 密钥数量:1个
- 特点
(1)加密效率高
(2)双方使用的密钥相同
- 安全性
(1)不安全(相对于非对称加密)
- 使用情况
(1)主流的加密方式
加密的方式:非对称加密
加密和解密使用的是不同的秘钥,其中一个对外公开,称为公钥,另一个被称为私钥。若使用公钥对数据进行加密,则只有使用对应的私钥才能解密,反之亦然。常见的有RSA
- 密钥数量:2个
(1)公钥:任何人都可以持有,一般用于加密作用
(2)私钥:只有自己持有,一般用于数字签名,签名的数据,可以证明是私钥持有人发送的数据,私钥签名的数据,私钥持有人无法否认自己发送这个消息。
- 特点
(1)公钥加密的只有对应的私钥能解开
(2)加密解密效率很低,一般不做大量数据加解密使用
- 安全性
(1)高
- 使用情况
(1)一般配合对称机密使用,建立之初先使用非对称加密,协商好对称加密的算法和密钥,然后使用对称加密,进行后续加解密。
常见的加密算法应用
常见的加密算法应用:单向散列加密 md5
- md 摘要算法包括多种算法,分别是md2、md4、md5
- 现在一般都是使用 md5 进行加密
jdk 内置的方法实现实现 md5
bc 方式实现 md5这种方式需要引入 bc 的 jar 包,bc 是 bouncycastle 的缩写。下载地址:
代码语言:javascript复制https://www.bouncycastle.org/latest_releases.html
cc 方式实现 md5
cc是commons.codec的简写,需要引入 apache-commons-codec-x.x.xjar 包。 该实现方式,其实是对 jdk 实现 md5 加密进行了封装和简化操作,cc 方式实现md5 加密很方便。
常见的加密算法应用:单向散列加密 sha
- sha 类加密算法有多种,共两大类。
一类是 sha1;另一类包含多种加密算法:sha224、sha256、sha384、sha512。这些统称为sha2
- 其中 sha1 加密后的长度是 160 byte,sha2 加密之后的密文长度和shaXxx 的数字相同,比如 sha256 加密之后,密文长度为 256 byte
jdk 内置方法实现 sha1
bc 方式实现 sha1
cc 方式实现 sha1
cc 方式实现 sha1 加密,非常简单。