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