Android加密方式

文章脑图

文章内容

1、什么是加密解密

  • 加密用于安全保密,利用(加密)一定方法把数据转变为密文,然后再用相同或不同的方法将密文还原(解密)

  • 加密有两个元素:算法和密钥
    算法:将普通的信息或者可以理解的信息与一串数字(密钥)结合,产生不可理解的密文的方法
    密钥:用来对数据进行编码和解密的一种算法

  • 在安全保密中,可通过适当的钥加密技术和管理机制来保证网络的信息通信安全。

2、加密解密类型

  1. 不可逆加密

  2. 可逆加密:对称加密和非对称加密
    对称加密:加密和解密数据都是使用同一个key
    非对称加密:加密和解密是使用不同的key。发送数据之前要先和服务端约定生成公钥和私钥,使用公钥加密的数据可以用私钥解密,使用私钥加密的数据可以用公钥解密

3、不可逆加密

  • 只能加密,不能解密

  • 加密算法:MD5(散列)、SHA(哈希)、HMAC

  • 作为基础加密,MD5、SHA 可以通过暴力碰撞算法破解

4、对称加密(可逆)

  • 对称加密:加密和解密使用同一个私钥

  • 对称加密算法:对称加密采用对称密码编码技术,特点是文件加密和解密使用相同的秘钥

  • 对称加密算法使用起来简单快捷,密钥较短,且破译困难

  • 国际数据加密算法(IDEA)比数据加密标准(DES)的加密性好,而且对计算机功能要求也没有那么高。IDEA加密标准由PGP(Pretty Good Privacy)系统使用。

  • 对称性加密算法有:AES、DES、3DES

5、非对称加密(可逆)

  • 非对称加密:加密和解密使用不同的秘钥,公钥加密数据,私钥解密数据。公钥加密的信息,只有私钥才能解密。私钥加密的信息,只有公钥才能解密

  • 1976年,美国学者Dime和Henman为解决信息公开传送和密钥管理问题,提出一种新的密钥交换协议,允许在不安全的媒体上的通讯双方交换信息,安全地达成一致的密钥,这就是“公开密钥系统”。相对于“对称加密算法”这种方法也叫做“非对称加密算法”

  • 非对称性加密:RSA、DSA、ECC

6、其他加密

Base64

  • Base64严格地说,属于编码格式,而非加密算法,用于二进制内容转换为可编辑的文本内容。

  • Base64也会经常用作一个简单的“加密”来保护某些数据,而真正的加密通常都比较繁琐。

  • 编码后的内容,是由64个字符(大小写英文字母 0-9 + / (= 补位符,填充字符))组成的序列,成为Base64。可逆的编码方式。

  • 常见于邮件、http加密,截取http信息,你就会发现登录操作的用户名、密码字段通过BASE64加密的。

7、加密方法

MD5

MD5即Message-Digest Algorithm 5(信息-摘要算法5),用于确保信息传输完整一致。是计算机广泛使用的杂凑算法之一(又译摘要算法、哈希算法),主流编程语言普遍已有MD5实现。将数据(如汉字)运算为另一固定长度值,是杂凑算法的基础原理,MD5的前身有MD2、MD3和MD4。

MD5本质是一种散列函数,用以提供消息的完整性保护。
单项的加密,不能解密,长度固定(32位)。
通过对任意长度的信息逐位进行计算,产生一个二进制长度为128位(十六进制长度就是32位)的 hash 值, 不同的文件产生相同的hash的可能性是非常小。

特点:
1.压缩性:任意长度的数据,算出的MD5值长度都是固定的;
2.容易计算:从原数据计算出MD5值很容易;
3.抗修改性:对原数据进行任何改动,哪怕只修改1个字节,所得到的MD5值都有很大的区别;
4.强抗碰撞:已知原数据和其MD5值,想找到一个具有相同MD5值的数据(及伪造数据)是非常困难的;
5.不可逆:MD5理论上是不可逆的(但是现在已经可以暴力破解了)。

但实际上MD5不是一种加密算法,只是一种算法,因为它是一个不可逆的过程,即 MD5 生成消息摘要后是不能通过结果解析得到原来的内容。

使用场景:
1.验证密码:只要算法不变,就能和服务器上的MD5匹配;在用户注册时,会将密码进行md5加密,存到数据库中。这样可以防止那些可以看到数据库数据的人,恶意操作了。
2.文件完整性的校验:当下载一个文件时,服务器返回的信息包括这个文件的md5,在本地下载完毕时进行md5加密,将两个md5值进行比较,如果一致则说明文件完整没有丢包现象。

SHA

安全散列算法,数字签名工具 , 长度比MD5要长,所以更安全,但是加密的效率要比MD5慢一些。
安全散列算法SHA (Secure Hash Algorithm),用于确保信息传输完整一致。SHA基于MD5实现。

是美国国家标准技术研究所发布的国家标准FIPS PUB 180,最新的标准已经于2008年更新到FIPS PUB 180-3。其中规定了SHA-1,SHA-224,SHA-256,SHA-384,和SHA-512这几种单向散列算法。SHA-1,SHA-224和SHA-256适用于长度不超过264二进制位的消息。SHA-384和SHA-512适用于长度不超过2128二进制位的消息。

SHA1有如下特性:
1.不可以从消息摘要中复原信息;
2.两个不同的消息不会产生同样的消息摘要。
3.著名的图片加载框架Glide在缓存key时就采用的此加密。
4.文件的秒传功能,以及相同的v4包冲突都是可以根据sha1值进行比对的。

AES加密

AES加密是一种高级加密标准,是一种区块加密标准。它是一个对称密码,就是说加密和解密用相同的密钥。WPA/WPA2经常用的加密方式就是AES加密算法。
高级加密标准(英语:Advanced Encryption Standard,缩写:AES),在密码学中又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。 这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用,Android 中的AES 加密 秘钥 key 必须为16/24/32位字节,否则抛异常。

DES加密

DES(Data Encryption Standard,数据加密算法)
是IBM公司于1975年研究成功并公开发表的,是一种堆成加密算法。

3DES加密

3DES是DES加密算法的一种模式,它使用3条64位的密钥对数据进行三次加密。数据加密标准(DES)是美国的一种由来已久的加密标准,它使用对称密钥加密法。
3DES(即Triple DES)是DES向AES过渡的加密算法(1999年,NIST将3-DES指定为过渡的加密标准),是DES的一个更安全的变形。
它以DES为基本模块,通过组合分组方法设计出分组加密算法。

DES与AES比较

单纯从名字上看AES(Advanced Encryption Standard)高级加密标准,安全性要高于DES,其实AES的出现本身就是为了取代DES的,AES具有比DES更好的安全性、效率、灵活性,所以对称加密优先采用AES。

RSA加密

RSA加密算法是一种非对称加密算法,非对称加密算法需要两个密钥:公共密钥和私有密钥。公钥和私钥是配对的,用公钥加密的数据只有配对的私钥才能解密。
RSA对加密数据的长度有限制,一般为密钥的长度值-11,要加密较长的数据,可以采用数据截取的方法,分段加密。
特点是加密速度比较慢,但是安全性比较高。

使用场景:
文件或数据在本地使用公钥或私钥加密,加密后的数据传送到服务器,服务器使用同一套密钥中的私钥或者公钥进行解密。

8、参考

Android常用加密方式

你可能感兴趣的:(Android加密方式)