欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

关于android开发中加密解密的理解

程序员文章站 2022-04-26 17:50:09
为什么要进行数据? 在一个android应用中,客户端与服务器之间数据通信安全是非常重要的。这就涉及到了数据的加密。 android中客户端与服务器端数据的加密主要有两种情况: 1.只有创建者才能够...

为什么要进行数据?

在一个android应用中,客户端与服务器之间数据通信安全是非常重要的。这就涉及到了数据的加密。

android中客户端与服务器端数据的加密主要有两种情况:

1.只有创建者才能够知道的数据 比如用户密码数据,这类数据加密后必须是不可逆的,也就是说数据加密后传到服务器,服务器端无需解密,也不能解密,直接存进。

2.也是比较重要的数据,但是服务器端可能也需要知道的,也就是说数据加密后必须是可以解密的。

对于这两种不同加密的情况自然我们要使用不同的加密算法

对于第一类,我们应该使用不可逆的加密算法。代表性的就是md5加密。

对于第二类,我们应该使用可逆的加密算法,可逆加密算法主要分为两类:对称加密和非对称加密。

对称加密:

加密秘钥和解密秘钥使用同一个秘钥

数据发送方将加密后的数据和加密秘钥一起发给接收方,接收方接收到数据后,先解密出加密秘钥,

然后再根据秘钥和解密算法得出加密数据的明文。

在对称加密算法中,使用的秘钥只有一个,收发双方都是用这个秘钥,这就需要收发双发事前都知道秘钥。

代表的对称加密算法:aes,des

aes/des 加密速度快,适合大量数据,des容易,一般用3重des,可以使用更加安全的aesm

非对称加密:

非对称加密算法需要两个秘钥,公开秘钥(public key)和私有秘钥(private key),公有秘钥和私有秘钥是一对

使用公开秘钥对数据加密后只有私有秘钥能够解密,使用私有秘钥加密后只有公有秘钥能够解密。

非对称加密的过程一般是这样的:由甲方生成一对秘钥,并且把公有秘钥对外公开,拿到这个公有秘钥的乙方使用

该秘钥对数据进行加密,然后把加密后的数据发送给甲方,甲方接收到数据后使用自己的私有秘钥进行解密。

代表的非对称加密算法:rsa rsa加密速度慢,适合少量数据加密。

总结:

基于上面的几种代表性算法的特点,在实际开发中一般可以采用rsa+aes混合加密。

rsa+aes混合加密过程:

客户端:

-首先生成一对rsa秘钥(公钥和私钥)

-生成aes秘钥

-再通过aes秘钥加密需要传输的数据

-使用rsa公钥加密生成的aes秘钥

-将加密后的aes秘钥和加密后的数据一起发送到服务器端

服务器端:

-接收加密后的aes秘钥和加密后的数据

-使用rsa私钥解密接收到的aes秘钥密文

-再使用解密到的aes秘钥对接收到的数据进行解密