加密/解密

问题思考

  1. 为什么需要加密 / 解密?
  2. 信息泄露可能造成什么影响?
  • 案例一:战争情报

加解 & 解密_python

  • 案例二:破译北斗部分编码?乌龙

加解 & 解密_机器学习_02

加密技术

加密技术是最常用的安全保密手段,利用技术手段把重要的数据变为乱码(加密)传送,到达目的地后再用相同或不同的手段还原(解密)。

加密技术包括两个元素:算法和密钥。算法是将普通的信息或者可以理解的信息与一串数字(密钥)结合,产生不可理解的密文的步骤,密钥是用来对数据进行编码和解密的一种算法。在安全保密中,可通过适当的钥加密技术和管理机制来保证网络的信息通信安全。

  • 算法:加密 / 解密所使用的转换规则
  • 密钥:加密 / 解密所使用的指令或代码

加解 & 解密_密码学_03

加密的目的与方式

加密的目的

加密的目的就是为了保护数据在存储状态下和在传输过程中,不被窃取、解读和利用。简单的说:确保数据的机密性和保护信息的完整性

加密的方式:单向散列加密

根据输入长度信息进行散列计算,得到固定长度输出,常用于密码保存,常见的是MD5,SHA等,通常会加盐处理



加解 & 解密_算法_04

  • 密钥数量
  • 特点

(1)加密效率高

(2)单方向加密

  • 安全性

(1)不安全(相对于对称加密)

  • 使用情况

(1)主流的加密方式

加密的方式:对称加密

采用单钥密码系统加密方法,同一个密钥可以同时用作信息的加密和解密。常见有AES



加解 & 解密_算法_05

  • 密钥数量:1个
  • 特点

(1)加密效率高

(2)双方使用的密钥相同

  • 安全性

(1)不安全(相对于非对称加密)

  • 使用情况

(1)主流的加密方式

加密的方式:非对称加密

加密和解密使用的是不同的秘钥,其中一个对外公开,称为公钥,另一个被称为私钥。若使用公钥对数据进行加密,则只有使用对应的私钥才能解密,反之亦然。常见的有RSA



加解 & 解密_密码学_06

  • 密钥数量:2个

(1)公钥:任何人都可以持有,一般用于加密作用

(2)私钥:只有自己持有,一般用于数字签名,签名的数据,可以证明是私钥持有人发送的数据,私钥签名的数据,私钥持有人无法否认自己发送这个消息。

  • 特点

(1)公钥加密的只有对应的私钥能解开

(2)加密解密效率很低,一般不做大量数据加解密使用

  • 安全性

(1)高

  • 使用情况

(1)一般配合对称机密使用,建立之初先使用非对称加密,协商好对称加密的算法和密钥,然后使用对称加密,进行后续加解密。

常见的加密算法应用

常见的加密算法应用:单向散列加密 md5

  • md 摘要算法包括多种算法,分别是md2、md4、md5
  • 现在一般都是使用 md5 进行加密

jdk 内置的方法实现实现 md5



加解 & 解密_python_07

bc 方式实现 md5这种方式需要引入 bc 的 jar 包,bc 是 bouncycastle 的缩写。下载地址:

https://www.bouncycastle.org/latest_releases.html



加解 & 解密_机器学习_08

cc 方式实现 md5

cc是commons.codec的简写,需要引入 apache-commons-codec-x.x.xjar 包。 该实现方式,其实是对 jdk 实现 md5 加密进行了封装和简化操作,cc 方式实现md5 加密很方便。



加解 & 解密_python_09

常见的加密算法应用:单向散列加密 sha

  • sha 类加密算法有多种,共两大类。

一类是 sha1;另一类包含多种加密算法:sha224、sha256、sha384、sha512。这些统称为sha2

  • 其中 sha1 加密后的长度是 160 byte,sha2 加密之后的密文长度和shaXxx 的数字相同,比如 sha256 加密之后,密文长度为 256 byte

jdk 内置方法实现 sha1



加解 & 解密_算法_10

bc 方式实现 sha1



加解 & 解密_算法_11

cc 方式实现 sha1

cc 方式实现 sha1 加密,非常简单。



加解 & 解密_密码学_12